我正在学习这个教程。
http://www.pluralsight.com/courses/mvc4
遗憾是,没有演示如何添加新部门。
我是按照该教程,并做了一些我的变化太像名称等。
但是现在我想做的事情却没有了。
开始提问
我在Project Gem.Domain中有两个实体
- Category.cs
- Product.cs
带有接口数据源。
namespace Gem.Domain
{
public interface IStoreDataSource
{
IQueryable<Product> Products { get; }
IQueryable<Category> Categories { get; }
void safe();
}
}
现在,这是在其他项目中,这个Gem.域被引用。
的内容类别名称为StoreDb。
namespace Gem.Infrastructure
{
public class StoreDb : DbContext, IStoreDataSource
{
public StoreDb() : base("GemStoreConnection")
{
}
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
void IStoreDataSource.safe()
{
SaveChanges();
}
IQueryable<Product> IStoreDataSource.Products
{
get
{
return Products;
}
}
IQueryable<Category> IStoreDataSource.Categories
{
get
{
return Categories;
}
}
}
}
im使用structuremap.mvc,与依赖关系解析教程中所解释的相同。
但是当我试图从控制器添加新类别时,我不能添加。
它既不理解.Add()方法,也不理解.Attach方法。
“我的控制器方法”来更新类别名称。
[HttpPost]
public ActionResult UpdateCategoryName_DT(Category category)
{
if (!ModelState.IsValid) return Content("Not Valid");
var updatedCategory = new Category()
{
CategoryID = category.CategoryID,
Name = category.Name
};
//For test using .Add() but not working neither do .Attach
_db.Categories.Add();
return Json(updatedCategory);
}
类别控制器中的构造函数
public class CategoriesController : Controller
{
private IStoreDataSource _db;
public CategoriesController(IStoreDataSource db)
{
_db = db;
}
解决的一种方法是我想删除依赖关系解析,并使DbStore成为直接对象,但这似乎不正确。
怎么办?
2条答案
按热度按时间nkoocmlb1#
如果您使用的是Entity Framework,则常规例程通常如下所示:
示例数据库上下文:
如果你想为你的上下文使用接口,你需要像这样的东西:
n3schb8v2#
最后,我不得不在DataSource接口文件中手动定义Add、Delete Attach方法。
所以现在看起来像:
并在StoreDB(通常称为db上下文)中添加了以下方法:
最后在控制器中使用Update方法:
我不确定这是不是最好的方法。我是.NET的新手,正在学习MVC。