Saya menggunakan kerangka Entitas 4.1 dalam aplikasi MVC 3. Saya memiliki entitas di mana saya memiliki kunci utama terdiri dari dua kolom (kunci komposit). Dan ini digunakan di entitas lain sebagai kunci asing. Bagaimana cara menciptakan hubungan? Dalam scnerios normal kami menggunakan:
public class Category
{
public string CategoryId { get; set; }
public string Name { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public string CategoryId { get; set; }
public virtual Category Category { get; set; }
}
tetapi bagaimana jika kategori memiliki kunci dua kolom?
c#
entity-framework
ef-code-first
foreign-keys
composite-key
DotnetSparrow
sumber
sumber
virtual
pada properti navigasi diperlukan untuk pemuatan lambat.virtual
pada properti skalar membantu pelacakan perubahan objek yang dilampirkan..HasRequired(p => p.Category)
tetapiProduct
tidak memiliki properti EntitasCatagory
tetapi dua id yang membuat kunci komposit dari sebuah kategori. Bisakah Anda jelaskan, karena saya yakin itu bahkan tidak akan bisa dikompilasi ... Terima kasih!Product
adaCategory
di jawaban saya.Saya yakin cara termudah adalah menggunakan Anotasi Data pada properti Navigasi seperti ini:
[ForeignKey("CategoryId1, CategoryId2")]
public class Category { [Key, Column(Order = 0)] public int CategoryId1 { get; set; } [Key, Column(Order = 1)] public int CategoryId2 { get; set; } public string Name { get; set; } public virtual ICollection<Product> Products { get; set; } } public class Product { [Key] public int ProductId { get; set; } public string Name { get; set; } public int CategoryId1 { get; set; } public int CategoryId2 { get; set; } [ForeignKey("CategoryId1, CategoryId2")] public virtual Category Category { get; set; } }
sumber
Navigation
properti. Namun, bagaimana cara menyetelcascadeDelete: false
untuk properti ini saja, bukan untuk seluruh situs? Terima kasih