我在数据库中存储媒体,例如。 电影,系列(季节,剧集),音乐(组,专辑,曲目)。 所有这些数据都存储在单个表(媒体)中。 问题:如何在代码中使用此表? 我有两个选择:

  1. 为所有媒体类型创建一个存储库和一个大型模型。
  2. 为每种媒体类型创建模型和存储库。

哪个更好?为什么?

===============>>#1 票数:0

我会为每种媒体类型做一个模型并回购。 我认为这要比健壮的方法更好,因为在这一点上,您不确定是否需要进行任何特定于类型的预格式化或验证或其他任何操作。 现在可能会有点开销,但是将来它将变得更加可维护且不那么复杂。 它提供了更好的解决方案。

顺便说一句。 我认为这就是为什么首先发明类和继承的原因:)您使用面向对象的语言,因此也可以利用它...

===============>>#2 票数:0

您可以为Media定义一个抽象的基础Model类,并从中派生所有具体的Media模型。

现在,您可以拥有一个处理所有媒体的媒体库。 您可以通过获取的类类型解析检索到的媒体。

interface IMediaRepository
{
    ICollection<Media> GetAll();
    ICollection<T> GetAllByType<T>() where T : Media;
}

存储库本身包装了数据库查询,并且对于存储库而言,对于所有介质都有一个表还是每种介质类型都有单独的表,则对于存储库而言并不重要。

  ask by Alex translate from so

未解决问题?本站智能推荐:

1回复

在存储库设计模式中获取表的名称

我正在使用通用存储库设计模式在项目中工作,我需要获取发送到以下“添加”功能的实体名称(表名称) 我想让实体表在保存之前用于一些验证
3回复

使用实体框架的存储库模式

以下是我的代码。 我想知道这是真的与否。 问题是,我不知道何时何地调用Save和Dispose方法。
1回复

存储库模式和组合/联接的实体作为优化的SQL

我正在构建一个比通常更难工作的系统之上的存储库系统(请参阅我之前的问题 )。 无论如何。 此时,我的数据模型非常简单:我有几个国家,每个国家都有0个或更多的机场。 这是我的基本存储库: public abstract class Repository<T> : IRe
1回复

实体框架存储库模式继承

现在,对于B和C拥有一个单独的存储库是有意义的,还是应该将类型信息传递给A的存储库中的方法,然后从那里返回内容。 我选择另一个存储库的原因是如果我想要 这可能开始变得混乱和棘手。 那么最好的方法是什么?
1回复

实体框架6,存储库模式和工作单元

我正在学习实体框架和一些设计模式,例如存储库模式和工作单元。 我编写了一个使用这些模式的程序。 在此类中,我有一个DbContext对象,并且我始终使用此静态DbContext。 在我的应用程序的整个生命周期中,只有一个DbContext对象。 我使用这种方式正确吗,请考虑是否有很多用户
1回复

存储库模式中的可重用模型

我最近遇到了具有多个应该可交换的数据库类型的问题。 我的解决方案是存储库模式。 拥有这样的模型。 将这两个类作为我的模型。 以及我的存储库中的以下方法。 现在我遇到了一些问题。 首先是使用像这样的存储库。 如果我尝试访问作者模型中的书籍,我会得到一个ObjectD
2回复

根据Repository模式,存储库应该提供查询还是实际实体?

我目前正在为使用带有C#和Razor的ASP.NET MVC3开发的Web应用程序重构我的代码。 我为了更好地构建我的应用程序而使用的模式之一是Repository模式 ,除了是一个非常有用的模式之外,它还是开发人员社区中经常讨论的问题。 在这种情况下,我发现Fredrik Normen
2回复

存储库模式和多个相关的核心实体或业务对象 - 一个存储库或更多?

我正在考虑实现存储库模式(因为我提出的是90%的实现),并且遇到了一个设计问题 - 我有两个或更多核心业务对象(例如,业务和联系人)一个CRM应用程序),BO可以强烈相关或根本不相关。 在这种情况下,我应该实现一个存储库(例如CrmRepository,.addBusiness(),。ad
1回复

总是返回单个对象的存储库是否有一种设计模式?

我正在开发一个应用程序,它将对象从另一个API转换成我自己的类型,然后又转换回来。 我已经通过许多存储库类公开了此功能,这些存储库类从我正在使用的API中传递了Document对象。 所有存储库类均基于以下接口。 INamed只是强制实体具有Name属性,因为每个实体都由Docume
3回复

如何使用ADO.NET实体框架测试存储库模式?

在使用Repository模式时,我发现很难理解使用TDD技术设计软件的原因,而实际上您必须在持久性数据集中实现存储库的接口。 为了明确我的观点,我将提交一个例子: 我的域模型上有以下界面: 我有以下用于测试目的的接口实现: 现在我创建一些测试: Can_A