【问题标题】:Models in a separate C# Project or Same?单独的 C# 项目中的模型还是相同?
【发布时间】:2019-07-20 18:32:13
【问题描述】:
我正在创建一个 C# MVC Net Core 应用程序。
阅读了一些书籍,有些人告诉他们要在自己的项目中编写数据库模型。其他人则说不要在他们自己的项目中使用数据库模型。只是好奇将模型放置在自己的项目中会带来哪些好处/优势?
问题“不需要反过来问”。我只是问分离模型的好处? (这个问题不是基于意见的,也不会要求推荐,只是这种方式的功能优势)
【问题讨论】:
标签:
c#
entity-framework
.net-core
asp.net-core-mvc
【解决方案1】:
将数据库模型放在单独的项目中的主要优点是,如果您正在编写一个支持多个数据库系统来存储数据的应用程序。在那种情况下,你可能会有这样的事情(在程序集中GregThomas.MyApp.DataAccess.Common:
namespace GregThomas.MyApp.DataAccess.Common
{
public interface ISprocketRepository
{
Task<IEnumerable<Sprocket>> GetAllAsync();
}
public class Sprocket
{
// All the properties of a sprocket would be here
}
}
然后,您将拥有每个您想要支持的数据库提供程序的单独程序集,例如,在程序集 GregThomas.MyApp.DataAccess.SqlServer 中:
namespace GregThomas.MyApp.DataAccess.SqlServer
{
public sealed class SprocketRepository : ISprocketRepository
{
Task<IEnumerable<Sprocket>> ISprocketRepository.GetAllAsync()
{
// Code to retrieve sprockets from a SQL Server database here
}
}
}
您的每个数据库特定程序集都将引用 .Common 程序集,以便能够实现适当的接口并访问模型。