Code First モードで Entity Framework を使用していくつかのオブジェクトを保存しようとしていますが、キーの生成に問題があります (または、キーを挿入するために既存のオブジェクトを変更する必要はありません)。これが私が抱えている問題の例です:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
public class AClass
{
[Key]
public int id { get; set; }
public List<SubClass> l;
};
public class SubClass
{
public string a;
public string b;
};
public class ADbContext : DbContext
{
public DbSet<AClass> dbset { get; set; }
}
class Program
{
static void Main(string[] args)
{
ADbContext db = new ADbContext();
AClass a = new AClass();
a.id = 1;
a.l = new List<SubClass>();
SubClass sc=new SubClass();
sc.a = "Hello";
sc.b = "World";
a.l.Add(sc);
SubClass sca = new SubClass();
sca.a = "Stack";
sca.b = "Overflow";
a.l.Add(sca);
db.dbset.Add(a);
db.SaveChanges();
}
}
}
このプログラムを実行すると、オブジェクト SubClass に主キーがないというエラーが表示されます。これらのオブジェクトをデータベースに格納するために Entity Framework を使用せずに手動でプログラムを作成する場合、次のようなテーブルを作成します。
AClass:
id int public key
SubClass:
AClass_id int foreign key references AClass(id),
postition_in_list_id int,
a string,
b string,
primary key (AClass_id,position_in_list_id)
そして、ID 1 の AClass の場合は、SubClass (1,1)、(1,2)、(1,3) が必要です。
これを行うためにEntity Frameworkを取得する方法はありますか、またはSubClassに任意のIDを追加する必要がありますか?
SubClass は、AClass の一部を除いて、データベースに格納されることはありません。