0

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);
            }
        }
    }
}

私は得た:

「関係制約内の従属ロールと主ロールのプロパティの数は同じでなければなりません。」

だから私はこの問題の解決策を探しています。

4

0 に答える 0