代码优先:UserData和User表

时间:2013-08-12 21:02:44

标签: ef-code-first code-migration

我在Code First和Code Migrations方面遇到了一些问题。

我有一个User类和一个UserData类(带有可选信息,如名/姓),但是当我尝试运行' Add-Migration'或者'更新 - 数据库'命令,我收到了几个错误。

我创建了User类:

public class User
{
    public int ID { get; set; }
    public string UserName { get; set; }
    public string EmailAddress { get; set; }
    public DateTime DateOfBirth { get; set; }

    public UserData UserData { get; set; }
    public int UserDataID { get; set; }
}

和UserData类:

public class UserData
{
    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string City { get; set; }
    public string Country { get; set; }
}

使用此设置我收到错误:

  

为表'用户'指定了多个标识列。只有一个   允许每个表的标识列。

尝试运行时更新数据库' (' Add-Migration'命令运行正常)。

我已尝试将public User User { get; set; }public int UserID { get; set; }添加到UserData.cs,但随后我发现了“添加迁移”错误。命令:

  

无法确定类型' UserData'之间关联的主要结尾。和'用户'必须使用关系流畅API或数据注释

显式配置此关联的主要结尾

知道如何解决这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

从User类中删除UserDataID,不需要它。 另外,设置public virtual UserData UserData { get; set; }以便EF在您访问FirstName等时为您填充