【发布时间】:2011-01-15 17:51:17
【问题描述】:
免责声明:有点 C# 新手 - 在 QA 工作几年后,第一次软件开发工作。
我意识到这个问题的风格以前曾被问过(LINQtoSQL 中的继承等),但我希望我能以不同的方式提出这个问题。
在我的数据库中,我将有一个“Event”的超类型和多个子类型:例如 Conference、Meeting 和 Appointment。
Event
Id (PK)
TypeId (FK EventTypes.Id)
Title
Conference
Id (PK, FK Event.Id)
Cost
Topic
Meeting
Id (PK, FK Event.Id)
Location
Organizer
Appointment
Id (PK, FK Event.Id)
Time
Address
我使用 Rob Conery 的 MVC StoreFront 应用程序作为参考。他本质上是从数据库中获取数据并创建类对象,手动将 Event.Id 映射到 db.Event.Id 等。
我想用我的事件数据模型来做这件事——我想检索所有事件,并有一个足够动态的 LINQ 表达式来根据某些条件(例如,TypeId)创建各种事件类型。
var result = from e in db.Events
select new IEvent
{
// Little help? ;)
};
找到一种方法来实现它会很棒,这样每个事件类型都知道如何保存自己和检索自己 - 我担心必须为每种类型编写相同的代码,只是改变字段。有意义吗?
我确实看到有人提出问题,有人回答如下:
public bool Save<T>() {}
问题是,我不确定将这段代码放在哪里。我也不确定是否应该使用 IEvent 接口或 Event 部分类。
我现在将用一个高级的谢谢你来结束这个怪物问题,感谢那些可以提供帮助/建议的人。
-- 编辑:进展顺利——使用 IEvent 从 DB 到 Views all :) (This Question Helped A Lot)
public class SqlEventRepository : IEventRepository
public IQueryable<IEvent> getEvents() {
// Get Events without doing a query for each type..possible?
var eventType1 = {query};
var eventType2 = {query};
return {concat of all queries};
}
public bool SaveEvent(IEvent) {
// Can I avoid calling a save function for each type of event?
}
【问题讨论】:
标签: linq-to-sql inheritance orm linq-to-entities