0
一個關係,我有我的實體設置:一零/與EF6,MySQL和MVC錯誤
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid UserId { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public virtual Permissions Permissions { get; set; }
...
}
public class Permissions
{
[Key, ForeignKey("User")]
public Guid UserId { get; set; }
public virtual User User { get; set; }
public bool UserType1 { get; set; }
public bool UserType2 { get; set; }
...
}
的目的是有分離到另一個表的權限,一個非常簡單的設置。在種子數據庫時,我創建了一些權限設置正確的用戶(使用外部編輯器檢查這些表具有與用戶/權限條目匹配的鍵)。設置代碼是:
public class EfDbInitializer : DropCreateDatabaseAlways<EfDbContext>
{
protected override void Seed(EfDbContext context)
{
// Add admin user
User admin = new User
{
UserName = "Admin",
Password = "pass",
FirstName = "Administrator",
LastName = "Web",
Permissions = new Permissions().SetAdminPermissions()
};
context.Users.Add(admin);
context.Users.Add(new User { UserName = "User1", Password = "pass", FirstName = "John", LastName = "Doe", CreatedBy = admin, Permissions = new Permissions().AddFullPermissions().AddInstructorPermissions() });
context.Users.Add(new User { UserName = "User2", Password = "pass", FirstName = "Jenny", LastName = "Doh", CreatedBy = admin, Permissions = new Permissions().AddFullPermissions().AddBasicPermissions() });
context.Users.Add(new User { UserName = "User3", Password = "pass", FirstName = "Sasha", LastName = "Grey", CreatedBy = admin, Permissions = new Permissions().AddBasicPermissions() });
context.Users.Add(new User { UserName = "User4", Password = "pass", FirstName = "Arnold", LastName = "Schwarzenegger", CreatedBy = admin, Permissions = new Permissions().AddInstructorPermissions() });
base.Seed(context);
}
}
但是,當試圖訪問相應的實體時,我總是收到異常。例如,直接在控制器I具有
if (filter == "Type1")
return View(_repository.Users.Where(p => p.Permissions.UserType1));
運行相應的動作給出了例外
System.Data.Entity.Core.EntityCommandExecutionException was unhandled by user code
我試圖禁用懶惰評價在DB配置(Configuration.LazyLoadingEnabled =假) 。然後,該例外更改爲:
An exception of type 'System.NullReferenceException' occurred in Web.WebUI.dll but was not handled in user code
檢查在lambda我看到字段設置成功(用戶名,密碼等)的「P」的對象,但權限字段爲空。
我使用MySql.Data 6.9.6; MySql.Data.Entity 6.9.6; 6.1.3的EntityFramework
謝謝!這有很大幫助。對於閱讀此內容的任何人 - 我還必須將IEnumerable更改爲EfUserRepository類中的IQueryable ;懶惰的評估也必須被禁用。 –
architec