我有很多实体(客户,潜在客户......)
我有一个名为Notes的实体,它可以为客户,潜在客户处理笔记...... 然后Notes表是: ID PARENT_ID PARENT_TYPE 注意
如何使用Entity Framework处理此问题?
由于 Joghn
答案 0 :(得分:0)
不要这样做。
如果您完全确定所有注释都是相同的抽象数据类型,即使它们可以由不同的数据类型拥有/使用,也要为每个所有者/用户类型构建注释的子类型。
这有四件事:如果需求蠕变使得例如客户备注最终与潜在客户备注不同,它允许您逃脱孵化,让您(或实体框架ORM)不必编写丑陋的SQL,允许您在数据库中使用普通的参照完整性约束,并允许您在.Net中使用体面的类型约束。
基本上:
在数据库中:
create table note (
id int synthetic key of some sort,
notetext text
);
create table customer_note(
id int synthetic key of some sort,
customer_id int not null references customer(id),
note_id not null references note(id)
-- add requirement creep customer note attribute data here
);
在.net:
void Customer :: addNote(CustomerNote& note){ //输入可防止意外地向客户添加潜在客户备注 ... }
(这里只有一个'问题':当Prospect变成客户时,你会有一个转换构造函数来完成这个更改,最终将涉及删除表prospect_note中的行并将它们插入到customer_note中.ORM会做这是一种低效的方式,级联删除,但是你可以通过编写存储过程等来覆盖它并有效地执行它。)