1

には 2 つのクラスがあります。

public class Item
{
    [Key]
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }

    public virtual BinCard BinCard { get; set; }
}

public class BinCard
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    [Required]
    public int ItemId { get; set; }
    [Required]
    public DateTime Date { get; set; }
    [Required]
    public double Qty { get; set; }

    public ObservableCollection<Item> Item { get; set; }
}

BinCard.IdはPKであり自動インクリメントです。

* FluentAPI * を使用して、 Item.IdBinCard.ItemIdを使用して 2 つのテーブル間の関係が必要です。

この関係を正しく作成するのを手伝ってください。

4

2 に答える 2

1

EF は、PK 以外の一意のキーをまだサポートしていないため、非 PK プリンシパル ID をサポートしていません。BinCard.Idこれを機能させるには、エンティティに基づいて関係を作成する必要がありますBinCardId-btw Item。モデルで関係を構築する正しい方法のようです。あなたの現在のモデルは本当に奇妙に見えます。

于 2013-02-06T08:51:35.047 に答える
1

Thanks for all replies. This is the solution for my question.

public class BinCard
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    [Required]
    public int ItemId { get; set; }
    [Required]
    public DateTime Date { get; set; }
    [Required]
    public double Qty { get; set; }

    public virtual Drug Drug { get; set; }
}

public class Item
{
    [Key]
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }

    public ObservableCollection<BinCard> BinCard { get; set; }
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Drug>()
            .HasRequired(s => s.Stock)
            .WithRequiredPrincipal(s => s.Drug);
}
于 2013-02-08T08:04:34.590 に答える