我最近一直在使用Entity Framework 4.3和Dependancy Injection學習MVC3,所以我可以在以後實現單元測試。我現在試圖實現我在各種示例中看到的一些功能,但是我遇到了一些似乎源於我使用依賴注入的問題,因此我希望有人指出我出錯的地方。MVC3使用EF4.3和Dependancy Injection問題
我的第一個問題很簡單,在我看到的大多數MVC3示例中,訪問數據庫是在控制器中完成的,但是在使用依賴注入時,我似乎需要將此代碼重構爲實現的存儲庫。這是正常的和正確的?
我的第二個更深入的問題是處理這個簡單的例子:
我在我的倉庫類了這種方法,幾乎從在線例子(here)複製。但是,我收到有關Include
部分的錯誤,並且intellisense確實說這個變量需要是一個字符串。我已經嘗試了前面提到的鏈接的原始代碼,並且工作正常,該項目之間唯一的主要區別是我正在使用依賴注入。
public ExampleUser GetStruContractUser(int id)
{
ExampleUser user = context.ExampleUsers
.Include(i => i.ExampleRoles)
.Where(i => i.UserID == id)
.Single();
return user;
}
將Include
參數更改爲以下工作正常。
public ExampleUser GetStruContractUser(int id)
{
ExampleUser user = context.ExampleUsers
.Include("ExampleRoles")
.Where(i => i.UserID == id)
.Single();
return user;
}
僅供參考這是我用我的DbContext類:
public class EFDbContext : DbContext
{
public DbSet<ExampleUser> ExampleUsers { get; set; }
public DbSet<ExampleRole> ExampleRoles { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<ExampleUser>().ToTable("User", "MySchema");
modelBuilder.Entity<ExampleRole>().ToTable("Role", "MySchema");
modelBuilder.Entity<ExampleUser>()
.HasMany(m => m.ExampleRoles)
.WithMany(t => t.ExampleUsers)
.Map(a =>
{
a.MapLeftKey("UserID"); // your PK column name in user table
a.MapRightKey("RoleID"); // your PK column name in role table
a.ToTable("UserRole", "MySchema"); // your join table name
});
}
}
這是一個問題,由於我使用扶養注射的或者是有別的事情上,我誤會?
如果您需要更多信息,請詢問我將盡力提供。
非常感謝。