0

1対多の関係を持つモデルをデータベースに挿入しようとしています:

私は2つのモデルを持っています:

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

    public virtual Country Country { get; set; }
}

public class Country
{
    public int Id { get; set; }
    public string CountryName { get; set; }

    public virtual ICollection<User> Users { get; set; }
}

User user = new User()
{
     Name = model.Name,
     Surname = model.Surname,  
     Country = new Country { Id = 1 }
};

データベースに挿入しようとすると、例外が発生します

1 つ以上のエンティティの検証に失敗しました。

CountryNameフィールドは必須です (データベースCoutryNameでは列が必要です)

データベースを呼び出すたびに完全な Country オブジェクトを取得したくないのですが、アイデアはありますか?

4

2 に答える 2

3

新しい国をインスタンス化する代わりに、次のようにします。

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }     
    public int CountryId { get; set; }

    [ForeignKey("CountryId")]
    public virtual Country Country { get; set; }
}

public class Country
{
    public int Id { get; set; }
    public string CountryName { get; set; }

    public virtual ICollection<User> Users { get; set; }
}

User user = new User()
{
     Name = model.Name,
     Surname = model.Surname,  
     CountryId = 1;
};

これにより、ユーザーに CountryID が明示的に設定されます。

于 2012-12-15T15:56:51.837 に答える
0

「独立した協会」の代わりに「FK 協会」を使用する必要があります 。 -framework.aspx

于 2012-12-23T17:24:54.667 に答える