【发布时间】:2009-05-11 22:38:34
【问题描述】:
在将部分类与 EF 生成的类一起使用的情况下,我应该如何处理自定义属性?
设置如下:
TimeSheet 表 - 存储员工的工作时间
- TimeSheetID(自动、整数、PK)
- EntryDate (日期时间)
- 小时(整数)
- 员工 ID(整数)
EmployeeHourlyRate 表 - 存储员工当前的小时费率。历史汇率也存储在这里。
- RateID (int, PK)
- EffectiveDate (int, PK)
- 率(双倍)
这是从 TimeSheet 到 EmployeeHourlyRate 的一对多关系。为了找到员工的费率,我会选择小于 timeSheet 的 EntryDate 的最大有效日期。
为了方便起见,我创建了一个名为 TimeSheet 的分部类,并向该类添加了一个名为“Rate”的新属性。我想做的是从填充我的 TimeSheets 集合的同一查询中填充我自己。我只知道没有简单而干净的方法来处理这个问题。
例如,我可以这样做:
var list = from ts in Context.TimeSheets
....
select new TimeSheet() {
TimeSheetID = ts.TimeSheetID,
EntryDate = ts.EntryDate,
Hours = ts.Hours,
EmployeeID = ts.EmployeeID,
Rate = SomeRate //real code has been omitted
};
这在理论上应该可行,但出于某种原因,EF 在运行时抱怨我正在重新使用实体生成的类(不知道为什么——如果我创建自己的自定义类,它就可以正常工作)。但是,即使它确实有效,我仍然必须维护一个字段列表并继续从我的 EF 映射到单个类 - 即,当/如果我将新字段添加到 TimeSheet 表时,维护会成为一个问题。必须重新输入所有这些信息也很愚蠢。
所以我的问题是,人们通常如何处理这种情况?有没有办法在数据模型中做一些事情,能够有效地了解我的加入规则(关于根据我的 EntryDate 选择正确的生效日期)并处理这个?
【问题讨论】:
-
用你提供的小sn-p代码有点难以分辨。也许你的部分课程的其余部分......
标签: c# asp.net entity-framework