实体框架不生成ApplicationUser外键注:针对这道题,我把模型简化了一点。我正在开发ASP.NETCoreMVC应用程序(使用EntityFrameworkCore)。我有三个模型。我有一个ApplicationUser(从IdentityUser扩展),我有一个Activity模型,我有一个“SignUp”模型,它有一个指向Activity的外键和一个指向ApplicationUser的外键。至少,这就是想法。问题是,实体框架将ActivityFK识别为FK,而不是applicationUser。这只是数据库中的另一个int,没有任何FK约束。我尝试了很多我在互联网上找到的东西,但我无法让它工作。这是我目前拥有的(为清楚起见而缩短):Activity:publicclassActivity{publicActivity(){SignUps=newHashSet();}publicintActivityID{得到;放;}[必需][StringLength(50)][Display(Name="Naam")]publicstringName{get;放;}publicvirtualICollectionSignUps{get;放;}}ApplicationUser:publicclassApplicationUser:IdentityUser{publicApplicationUser(){Activities=newHashSet();}[必需][Display(Name="Voornaam")]publicstringFirstName{get;放;}[必需][Display(Name="Achternaam")]publicstringLastName{get;放;}publicvirtualICollection}}注册:publicclassSignUp{publicintSignUpID{get;放;}[必需]publicintActivityID{get;放;}[ForeignKey("ApplicationUser")]publicintApplicationUserID{get;放;}[必需]publicstringStatus{get;正如我上面所说,SignUp中的ActivityFK工作正常,ApplicationuserFK没有。EntityFramework只是在数据库中生成一个没有任何FK约束的int,并且在构建CRUD页面时,它也不会被识别为FK。我是ASP.netMVC和EF的新手,我觉得我忽略了一些非常简单的事情。Facepalm即时传入?谢谢!Activity关系起作用是因为您具有导航属性。Activity有一个ICollection,因此EF在SignUp上绑定到ActivityID以维护该集合。与ApplicationUser没有任何相似之处。您只有一个名为ApplicationUserID的属性;EF不会对此做任何事情,因为它不知道应该做什么。只需添加一个导航属性,您就可以开始了:[ForeignKey("ApplicationUser")]publicintApplicationUserID{get;放;}publicApplicationUserApplicationUser{得到;放;}编辑实际上,在查看您的代码后,我认为您可能刚刚弄乱了ApplicationUser上的ICollection。ApplicationUser和Activity之间没有直接关系。这种关系来自SignUp,它基本上是一个带有有效负载的M2M。所以你应该有这样的东西:publicclassApplicationUser:IdentityUser{publicApplicationUser(){Activities=newHashSet();}[必需][Display(Name="Voornaam")]publicstringFirstName{get;放;}[必需][Display(Name="Achternaam")]publicstringLastName{get;放;}publicvirtualICollectionSignUps{get;放;然后,它的功能与您当前的Activity关系完全一样。以上就是C#学习教程:实体框架不生成ApplicationUser外键分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
