我正在尝试在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?
除了作为AClass的一部分外,SubClass永远不会存储在数据库中。
答案 0 :(得分:0)
试试这个:
public class SubClass
{
[ForeignKey("AClass")]
[Key]
public int AClassId {get; set;}
public string a;
public string b;
}