这是一个非常难以解释的问题,我希望我的代码提取能解释大部分问题。最佳实践:多实体到单个实体
比方说,你有以下的数据库设计: musicstyle relations http://img190.yfrog.com/img190/2080/musicstylerelations.jpg
你想建立一个通用界面修改所有三个实体之间的关系musicstyle。目前,我创建了一个MusicStyleController,它需要与其相关的实体类型(会员,事件或乐队)。
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult DeleteMusicStyle(int id, string type, int typeid)
{
if (!(Session["MemberLoggedIn"] is Member)) return Json(string.Empty);
Member member = (Member)Session["MemberLoggedIn"];
switch (type) {
case "member":
_memberService.DeleteMusicStyle(member, id);
break;
case "band":
Band band = _bandService.GetBand(typeid);
_bandService.DeleteMusicStyle(band, id);
break;
case "event":
Event @event = _eventService.GetEvent(typeid);
_bandService.DeleteMusicStyle(@event, id);
break;
}
return SelectedMusicStyles();
}
我让自己生病写这样的代码,但无法找到另一种更优雅的方式。
请注意,使用jquery.post()调用此函数。
你会如何重构这个代码,你会更加规范化数据库中的问题?请记住,我正在使用实体框架作为数据模型。
什么你希望从标准化的数据库来获得?你期待什么样的数据量(I.E.,几千万行?) – Kane 2009-07-09 12:12:40
@Kane在这种情况下,我正在努力寻求最佳实践,我不知道那是什么。这个数据库提供了与实体框架的平滑集成,并且使代码变得容易,如果我规范化它甚至更多,例如创建一个Band,Event和Member链接的MusicStyleCollection表会让代码变得更难。如果表增长异常大(这可能会),这将是一个performancehit。 – Peter 2009-07-09 19:37:20
我刚刚添加它作为一个建议,因为可能有一种正常化数据库的方式,我还没有想到。我不认为自己是一个allknowing的开发人员,我从来都不是...... – Peter 2009-07-09 19:38:43