3

私はいくつかのモデルを持っており、「1 対 0 または 1」の関連付けを行いたいと考えています。Fluent API を使用して検索し、関連付けを作成しようとしました。ここに私のクラスがあります:

public partial class Bill
{

[Key]
public int Id { get; set; }
[Required]
public double Amount { get; set; }

public virtual DomainRegOrder DomainRegOrder { get; set; }

}

public partial class DomainRegOrder
{
[Key]
public int Id { get; set; }
[Required]
public string DomainName { get; set; }

public virtual Bill Bill { get; set; }
}

そして私の DataContext クラスで:

public class DataContext : DbContext {

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{

 modelBuilder.Entity<DomainRegOrder>()
 .HasOptional(x => x.Bill)
 .WithOptionalDependent();

 }

しかし、データベースを初期化すると、Billsテーブルに「DomainRegOrder_Id」と「DomainRegOrder_Id1 」という名前の 2 つの列ができます。

以下のようにBillエンティティにDomainRegOrderIdを追加しようとしました。

public int? DomainRegOrderId { get; set; }

しかし、"Bills" テーブルには" DomainRegOrderId " と " DomainRegOrder_Id " があります。

私も.WithOptionalDependent().WithOptionalPrincipal()に 変更しましたが、私の知る限り変更はありません!!

誰かがこれらの重複した外部キ​​ーを取り除くのを手伝ってくれませんか?

4

1 に答える 1

3

私はあなたがこのようなものが欲しいと信じています:

modelBuilder.Entity<Bill>() 
  .HasOptional(x => x.DomainRegOrder) 
  .WithOptionalDependent(c => c.Bill).Map(p => p.MapKey("DomainRegOrderID"); 
于 2012-05-27T17:08:02.640 に答える