Entity Framework中的ParentId和Parent类型

时间:2010-05-16 18:11:14

标签: entity-framework

我有很多实体(客户,潜在客户......)

我有一个名为Notes的实体,它可以为客户,潜在客户处理笔记...... 然后Notes表是: ID PARENT_ID PARENT_TYPE 注意

如何使用Entity Framework处理此问题?

由于 Joghn

1 个答案:

答案 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会做这是一种低效的方式,级联删除,但是你可以通过编写存储过程等来覆盖它并有效地执行它。)