是单独的C#项目中的模型还是相同的模型?

时间:2019-02-27 05:33:15

标签: c# entity-framework .net-core asp.net-core-mvc

我正在创建一个C#MVC Net Core应用程序。

阅读一些书籍,有些则告诉他们在自己的项目中编写数据库模型。其他人则说不要在自己的项目中使用数据库模型。只是好奇将模型放置在自己的项目中会带来什么好处/优势? 问题“不需要反向询问。我只是问分离模型的好处? (该问题不是基于观点的,也不会提出建议,只是通过这种方式可以带来功能上的好处)

1 个答案:

答案 0 :(得分: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 程序集,以便能够实现适当的接口并访问模型。