Entity Framework 6.1.3 に次のデータ モデルがあります。
using System.Data.Entity;
public class Student
{
public int Id { get; set; }
public virtual Contact Contact { get; set; }
}
public class Contact
{
public int Id { get; set; }
public virtual Student Student { get; set; }
}
public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder builder)
{
builder.Entity<Contact>()
.HasOptional(x => x.Student)
.WithOptionalDependent(x => x.Contact)
.WillCascadeOnDelete(true);
}
}
public static class Program
{
private static void Main()
{
Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());
using (var context = new MyContext())
context.Database.Initialize(force: true);
}
}
このコードを起動すると、目的のテーブル構造が正確に得られます。
dbo.Contacts
Id (PK)
Student_Id (FK, NULL, CASCADE ON DELETE)
dbo.Students
Id (PK)
ただし、エンティティStudent_Id
で使用できるようにプロパティを追加したいと思います。そのため、ナビゲーションを通じて他のテーブルに参加する必要なくContact
、を読むことができます。Student_Id
.Student.Id
プロパティをContact
エンティティに追加すると、 と の 2 つの列が表示されるかStudent_Id
、Student_Id1
というエラー メッセージが表示されますEach property name in a type must be unique.
。
列は既にデータベースにあり、必要なのはエンティティにもあることだけです。なぜそんなに面倒なのですか? 解決策はありますか?