我想設置一個導航屬性,將保存另一個表的零個或多個元素。實體框架似乎具有的問題是其他表具有複合主鍵。實體框架代碼第一個導航問題
public class Alpha
{
public int Id { get; set; }
public int? BetaId { get; set; }
public virtual ICollection<Beta> Beta { get; set; }
public string Name { get; set; }
}
public class Beta
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int SequenceNumber { get; set; }
public string Name { get; set; }
}
public class ABContext : DbContext
{
public DbSet<Alpha> Alpha { get; set; }
public DbSet<Beta> Beta { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Beta>()
.HasKey(b => new { b.Id, b.SequenceNumber });
}
}
我不知道如何正確建立關係。我嘗試了幾個不同的東西。實體框架要麼抱怨不使用Beta類中的兩個鍵來定義導航屬性,要麼在Alphas表中創建一對沒有正確鏈接表的額外列。
目標是阿爾法應基於Beta.Id
持有一套0或更多的貝塔。一個測試版可能屬於零個或多個阿爾法。但是,我對Beta到Alpha的關係並不感興趣。
任何想法?
爲什麼不用[Key]屬性指定你的密鑰?即使你不感興趣,將Alpha屬性加入Beta也不會傷害任何人。 – Euphoric 2011-04-05 05:13:27
我可以使用'[Key,Column(Order =#),...]',但它的作用與'.HasKey()'完全相同。添加'公共虛擬ICollection Alpha {get;組; }到類Beta創建一個BetaAlphas查找表。我只想設置'Alpha.BetaId'並自動獲取Betas的集合。 –
sumpubu
2011-04-05 14:25:31