Сначала мы работаем над кодом EF, чтобы оценить, соответствует ли он нашей существующей базе данных. Структура базы данных объектов:
1) Продукт (составной ключ)
int Идентификатор продукта: PK (без идентификации) - создается автоматически вместо триггера
int Version From: PK (Non Identity) - создается автоматически вместо триггера
2) Пакет (составной ключ)
PackID: PK (без идентификации) - автоматически генерируется вместо триггера
Версия от: PK (Non Identity) - автоматически создается вместо триггера
Идентификатор продукта: (не может быть установлен как FK - ограничение дизайна)
RelationShip: продукт имеет много упаковок
Как мы можем смоделировать вышеописанный сценарий с EF Code First 4.1?
Решение, которое пытался
public class Product
{
public int ProductID { get; set; }
public string ProductName { get; set; }
public short Version { get; set; }
public virtual ICollection<Pack> Packs { get; set; }
}
public class Pack
{
public int PackID { get; set; }
public int ProductID { get; set; }
public short Version { get; set; }
public virtual Product Product { get; set; }
}
public class ProductContext : DbContext
{
public DbSet<Pack> Pack { get; set; }
public DbSet<Product> Product { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>().ToTable("Product");
modelBuilder.Entity<Pack>().ToTable("Pack");
modelBuilder.Entity<Product>()
.HasKey(a => new { a.ProductID, a.VersionFrom });
modelBuilder.Entity<Pack>()
.HasKey(a => new { a.PackID, a.VersionFrom });
modelBuilder.Entity<Product>().HasMany<Pack>(x => x.Packs).WithRequired().HasForeignKey(p => p.ProductID);
base.OnModelCreating(modelBuilder);
}
}
....
var product = new Product { ProductName = "EntTest1"};
var pack = new Pack {};
using (var productContext = new ProductContext())
{
product.Packs.Add(pack);
productContext.Product.Add(product);
productContext.SaveChanges(); //**ERROR**
}
....
Во время генерации модели была обнаружена одна или несколько ошибок проверки:
System.Data.Edm.EdmAssociationConstraint: : Number of Properties in the Dependent and Principal Role in a relationship constraint must be exactly identical.
Пожалуйста, ПОМОГИТЕ !!!