0

我首先对 ef 代码的关系有一些疑问。我的代码:

public class user
{
    public user()
    {
    }

    public int id { get; set; }
    public string code { get; set; }
    public string name { get; set; }
}

public class dep
{
    public int id { get; set; }
    public Nullable<int> UserId { get; set; }
    public virtual user User { get; set; }
}

modelBuilder.Entity<dep>()
            .HasOptional(t => t.User)
            .WithOptionalDependent();

代码首先自动生成的表 dep 有一个名为 User_Id 的外键,但这不是我想要的。我想使用我在模型中定义的列 UserId。我将如何更改我的代码。

4

2 回答 2

1

认为您可以添加一个属性

[ForeignKey("UserId")]

在您的用户属性上。

现在,问题是为什么?您不在数据库中,而是在 ORM 中,这是一个对象世界。您应该使用用户导航属性,而不是使用 UserId。如果你需要 UserId,你应该使用 User.Id。

但是……那是你的灵魂;)

于 2012-06-26T07:55:11.923 回答
0

你能试试下面的吗?我没有测试它,但认为它应该工作:

    public class User
    {
        public int Id { get; set; }
        public string Code { get; set; }
        public string Name { get; set; }
        public Dep Dep { get; set; }
    }
    public class Dep
    {
        public int Id { get; set; }
        public User User { get; set; }
    }

    public class DepConfig : EntityTypeConfiguration<Dep>
    {
        public DepConfig()
        {
            this.HasRequired(t => t.User)
                    .WithOptional(t => t.Dep);
        }
    }

这假设 Dep 必须有一个 User,但 User 不需要有 Dep。我将属性 Dep 添加到 User 类中,以便您可以双向导航。

希望能帮助到你。

于 2012-06-26T08:18:31.080 回答