Основным преимуществом размещения моделей вашей базы данных в отдельном проекте является то, что вы пишете приложение, которое будет поддерживать несколько систем баз данных для хранения данных.В этом случае у вас может быть что-то вроде этого (в сборке 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 , чтобы иметь возможность реализовать соответствующие интерфейсы и получить доступ к моделям.