Model view controller 松散耦合开发
我正在阅读Sanderson的“Pro ASP.NET MVC框架”。 我对解耦实现有点困惑 他在代码示例和存储库模式中使用LinqToSql与数据库交互Model view controller 松散耦合开发,model-view-controller,architecture,repository-pattern,Model View Controller,Architecture,Repository Pattern,我正在阅读Sanderson的“Pro ASP.NET MVC框架”。 我对解耦实现有点困惑 他在代码示例和存储库模式中使用LinqToSql与数据库交互 [Table(Name = "Products")] public class Product { [Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync=AutoSync.OnInsert)] public int ProductID { get; set; } [Co
[Table(Name = "Products")]
public class Product
{
[Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync=AutoSync.OnInsert)]
public int ProductID { get; set; }
[Column]
public string Name { get; set; }
[Column]
public string Description { get; set; }
[Column]
public decimal Price { get; set; }
[Column]
public string Category { get; set; }
}
public class SqlProductsRepository : IProductsRepository
{
private Table<Product> productsTable;
public SqlProductsRepository(string connectionString)
{
productsTable = (new DataContext(connectionString)).GetTable<Product>();
}
public IQueryable<Product> Products
{
get { return productsTable; }
}
}
[表(Name=“产品”)]
公共类产品
{
[列(IsPrimaryKey=true,IsDbGenerated=true,AutoSync=AutoSync.OnInsert)]
public int ProductID{get;set;}
[专栏]
公共字符串名称{get;set;}
[专栏]
公共字符串说明{get;set;}
[专栏]
公共十进制价格{get;set;}
[专栏]
公共字符串类别{get;set;}
}
公共类SqlProductsRepository:IPProductsRepository
{
私有表产品稳定;
公共SqlProductsRepository(字符串连接字符串)
{
productsTable=(新数据上下文(connectionString)).GetTable();
}
公共卫生产品
{
获取{return productsTable;}
}
}
SqlProductsRepository在这里是数据层,因为它与数据库交互。
1.但它位于DomainModel项目中。也许只是为了演示?
那么域逻辑在哪里呢
2.我看不到完全解耦,因为产品属性返回IQueryable。
是否假定如果我们更改一个组件,它必须包含产品类?
我似乎需要多做一个抽象的项目:
存储库接口(如IPProductRepository)和映射类接口(如IPProduct)。
数据层组件必须实现这些ABastraction。
是这样吗
也许很难很快解释它,但它通常是如何在实际项目中工作的
- 。。。()