我有很多的实体(客户,潜在客户,...)的ParentId和父类型实体框架
我叫票据一个实体,它可以处理客户,潜在客户的笔记... 票据表然后: 标识 PARENT_ID PARENT_TYPE 注
如何与实体框架处理呢?
感谢 Joghn
我有很多的实体(客户,潜在客户,...)的ParentId和父类型实体框架
我叫票据一个实体,它可以处理客户,潜在客户的笔记... 票据表然后: 标识 PARENT_ID PARENT_TYPE 注
如何与实体框架处理呢?
感谢 Joghn
不要这样做。
如果你绝对相信,所有音符都一样的抽象数据类型,即使他们可以拥有/由不同的数据类型使用,建立值得注意的亚型为每个拥有者/用户类型。
这样做有四点:如果需求蠕变使得您可以使用逃生孵化器,例如客户笔记最终与潜在客户笔记不同,使您(或实体框架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:
空隙顾客:: addNote(CustomerNote &注释){// 打字防止意外地添加前景音符给客户 ... }
(只有一个“问题”在这里:当一个前景变成客户,你将有一个转换构造函数,具体化这种变化,这将最终涉及从表prospect_note删除行,并将其插入到customer_note。在ORM将这个做低效的方式,级联删除,但你高效能重写并做到这一点,如果你需要,通过编写存储过程等。)