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")]

Userプロパティで。

さて、問題はなぜですか?あなたはデータベースではなく、オブジェクトの世界であるORMにいます。UserIdではなく、UserNavigationプロパティを使用する必要があります。また、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にユーザーが必要であると想定していますが、ユーザーはDepを持っている必要はありません。双方向にナビゲートできるように、プロパティDepをUserクラスに追加しました。

それが役に立てば幸い。

于 2012-06-26T08:18:31.080 に答える