Enitity Framework で記述された単純なデータ モデルを取得しましたが、モデルの関係に関する問題を解決できません。Fluent API を使用していくつかのアプローチを試みましたが、常に説明的でない例外が発生しました。
コードは次のとおりです。
public abstract class Entity
{
[Key, Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Int32 Id { get; set; }
}
public class Language : Entity
{
[Key, Column(Order = 2)]
public String Verbal { get; set; }
public virtual ICollection<PostContent> Contents { get; set; }
}
public class Post : Entity
{
public virtual ICollection<PostContent> Contents { get; set; }
}
public class PostContent
{
[Key, Column(Order = 1)]
public Int32 PostId { get; set; }
[Key, Column(Order = 2)]
public Int32 LanguageId { get; set; }
[ForeignKey("PostId")]
public virtual Post Post { get; set; }
[ForeignKey("LanguageId")]
public virtual Language Language { get; set; }
public String Content { get; set; }
}
public class BlogContext : DbContext
{
public DbSet<Language> Languages { get; set; }
public DbSet<Post> Posts { get; set; }
public DbSet<PostContent> PostContents { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
public class BlogContextInitializer : DropCreateDatabaseIfModelChanges<BlogContext>
{
protected override void Seed(BlogContext context)
{
//For test
context.Languages.Add(new Language { Verbal = "Italian" });
context.Languages.Add(new Language { Verbal = "English" });
context.SaveChanges();
}
}
class Program
{
static void Main(string[] args)
{
Database.SetInitializer<BlogContext>(new BlogContextInitializer());
using (BlogContext blogContext = new BlogContext())
{
//init on call.
var langs = blogContext.Set<Language>().AsEnumerable();
foreach (var lang in langs)
{
Console.WriteLine("Language Id: {0}, Verbal: {1}", lang.Id, lang.Verbal);
}
}
}
}
私は得た:
「関係制約内の従属ロールと主ロールのプロパティの数は同じでなければなりません。」
だから私はこの問題の解決策を探しています。