0
我試圖在代碼優先模式下使用實體框架來嘗試和存儲一些對象,並且我在關鍵代中遇到了問題(或者更確切地說,我不想改變我現有的對象插入密鑰)。這裏是我遇到的問題的一個例子:實體框架鍵列表
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();
}
}
}
如果你運行這個程序,然後將它錯誤說,對象子類有沒有主鍵。現在,如果我寫的手程序,而無需使用實體框架在數據庫中存儲這些對象,我會做的是有一個像表:
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)
而且我會爲ACLASS說ID爲1我想有子類(1,1),(1,2),(1,3)如果你明白我的意思。
有什麼辦法讓Entity Framework做到這一點,還是我必須添加任意ID到SubClass?
子類從不存儲在數據庫中,除了作爲AClass的一部分。
作爲一個建議,使用'using'塊用'dbcontext'處置它。 –