我试图从现有数据库创建模型,但我注意到了一个问题。
我有以下表格
User
----------------
<pk> userId
<fk> profileId
Profile
----------------
<pk> profileId
所以每个用户都有个人资料。
我认为会产生类似这样的东西
public class User
{
public int userId {get; set;}
public virtual Profile Profile { get; set; }
}
public class profile
{
public int profileId {get; set;}
public virtual User User { get; set; }
}
但相反,个人资料就像这样
public class profile
{
public int profileId {get; set;}
public virtual ICollection<User> User { get; set; }
}
实体认为个人资料可以拥有多个用户,因为个人资料没有userId。所以我在用户表的profileId
上创建了一个唯一索引(忽略NULL值),但我仍然遇到同样的问题。
如何使用数据库第一种方法在Entity中创建1:0..1关系。
谢谢
答案 0 :(得分:1)
实体框架不理解用户表的profileId上的唯一键隐式指定1:0..1关系。
如果您真的想要模拟Entity Framework理解的1:0..1关系,那么配置文件表没有理由拥有它自己的密钥。您可以简单地重用用户表中的密钥。在这种情况下,profileId列将成为主键和外键(指向用户表的userId)。您的最终数据库方案将如下所示
User
----
<pk>Id
userName
Profile
----
<pk><fk>UserId
profileName