小编Sam*_*Sam的帖子

存储库和服务层之间的区别?

在OOP设计模式中,存储库模式和服务层之间有什么区别?

我正在开发一个ASP.NET MVC 3应用程序,我正在尝试理解这些设计模式,但我的大脑却没有得到它......

oop asp.net-mvc repository-pattern service-layer

181
推荐指数
5
解决办法
8万
查看次数

实体框架代码优先 - 流利Api与数据注释的优缺点

在使用Entity Framework代码优先创建数据库时,可以从代码中提取许多数据库模型.Fluent API和/或Attributes可用于微调模型.

与数据注释相比,Fluent Api有哪些优缺点?换句话说:即使在某些情况下可以使用这两种方法,在一种情况下,一种方法应该优先于另一种方法吗?

entity-framework ef-fluent-api

107
推荐指数
1
解决办法
3万
查看次数

丰富与贫血领域模型

我决定是否应该使用富域模型而不是贫穷领域模型,并寻找两者的好例子.

我一直使用Anemic Domain Model构建Web应用程序,由Service - > Repository - > Storage层系统支持,使用FluentValidation进行BL验证,并将我的所有BL放在Service层中.

我读过Eric Evan的DDD书,他(以及Fowler和其他人)似乎认为Anemic Domain Models是一种反模式.

所以我真的很想了解这个问题.

此外,我真的在寻找一个富域模型的好(基本)示例,以及它提供的贫血域模型的好处.

domain-model anemic-domain-model rich-domain-model

83
推荐指数
7
解决办法
3万
查看次数

Autofac - InstancePerHttpRequest与InstancePerLifetimeScope

这两个范围有什么区别?

我正在Module每层构建(存储库,服务,MVC应用程序),但为了让InstancePerHttpRequest您需要Autofac.Mvc程序集.

我应该在我的存储库和服务层中使用哪个范围?

c# dependency-injection autofac asp.net-mvc-3

58
推荐指数
2
解决办法
3万
查看次数

如何在Code First中指定数据库名称?

如何告诉EF如何命名数据库以及将其放在何处?

如果Web.Config中没有连接字符串,它会尝试将其放在本地SQLEXPRESS服务器中,但我想将它放在已知的SQL Server上,并将其命名为我想要的.有什么建议?

entity-framework-4 ef-code-first

53
推荐指数
5
解决办法
5万
查看次数

你应该单元测试简单属性吗?

您应该单元测试类的简单属性,断言是否设置并检索了值?或者这真的只是单元测试语言?

public string ConnectionString { get; set; }
Run Code Online (Sandbox Code Playgroud)

测试

public void TestConnectionString()
{
    var c = new MyClass();
    c.ConnectionString = "value";

    Assert.Equal(c.ConnectionString, "value");
}
Run Code Online (Sandbox Code Playgroud)

我想我没有看到它的价值.

c# unit-testing

45
推荐指数
2
解决办法
2万
查看次数

实体框架代码首先 - 定义关系/密钥

我首先使用代码设计我的数据库,我想我需要一些帮助.

我收到此错误:

在表'Invoices'上引入FOREIGN KEY约束'SalesOrder_Invoices'可能会导致循环或多个级联路径.指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束.
无法创建约束.查看以前的错误.

我想尝试以下关系/键:

--> = 1 to Many Relationship
Run Code Online (Sandbox Code Playgroud)
  1. 客户 - >客户位置
  2. CustomerLocation - > SalesOrder
  3. SalesOrder - >发票
  4. SalesRep - > SalesOrder
  5. PaymentTerm - >客户
  6. PaymentTerm - > SalesOrder
  7. PaymentTerm - >发票

我试图通过以下标准来定义它们:

<ClassName><PrimaryKeyID>
Run Code Online (Sandbox Code Playgroud)

示例:Customer具有ID属性,因此在CustomerLocation我定义外键时如下:

Public Property CustomerID AS Integer
Run Code Online (Sandbox Code Playgroud)

我所要做的就是定义外键是否正确?我是否还必须为我定义的每个键设置导航属性?

并且,我可以在对象的同一主键上没有多个外键吗?

更新

所以要定义一个关系,你使用ClassName.PrimaryKeyProperty?或者你使用导航属性?或两者?困惑!!

更新2

因此,为了使关系发挥作用,你必须定义双方......我想.

Public Class Customer
    Public Property ID AS Integer
    Public Overrideable Property Locations AS ICollection(OF CustomerLocation) …
Run Code Online (Sandbox Code Playgroud)

entity-framework entity-framework-4.1

38
推荐指数
1
解决办法
4万
查看次数

CQRS命令和查询 - 它们属于域吗?

在CQRS中,它们的命令和查询是否属于域?

事件是否也属于域?

如果是这种情况,那么命令/查询处理程序只是在基础架构中实现吗?

现在我有这样的布局:

Application.Common
Application.Domain
  - Model
    - Aggregate
  - Commands
  - Queries
Application.Infrastructure
  - Command/Query Handlers
  - ...
Application.WebApi
  - Controllers that utilize Commands and Queries
Run Code Online (Sandbox Code Playgroud)

另一个问题,你从哪里筹集事件?命令处理程序或域聚合?

domain-driven-design cqrs

31
推荐指数
2
解决办法
8978
查看次数

MVC3应用程序/服务层/存储库层/ POCO类/ EF4 - 问题!

我是这个整体设计概念的新手,在过去几周的阅读中,我收集了大量的信息,但它似乎分散且矛盾.条款喜忧参半,我只是很难想到这一点.

我使用的模式是这样的,并假设流程如下:

MVC应用程序
控制器处理来自客户端的给定视图的请求/响应.在控制器操作方法内部,它们联系服务(服务层)并请求对象以构建视图模型,并从视图模型中检索对象.

视图模型
我在视图中使用强类型视图模型.

是视图模型DTO吗?它们应该只包含Name,AddressLine1,Address City等简单属性,还是应该包含复杂属性,多个对象等.

是视图模型中的验证.如果是这样,它将是必需的字段,字段长度等验证.然后验证用户名已经存在,或者您需要与服务层中的其他对象进行交互?

视图模型可以只包含从EF返回的POCO类,还是应该使用AutoMapper?

如果使用AutoMapper和DTO,DTO是POCO类的克隆吗?

您会在控制器,视图模型或下面的服务层中进行映射吗?

服务
对我来说,服务是与存储库联系的对象,用于从EF获取POCO对象.这就是我所有业务逻辑的所在.一旦服务将对象传递回存储库以持久保存到EF,它们就被视为有效对象.它是否正确?

存储库
它们中没有业务逻辑,它们仅用于在服务和EF之间传输对象.它是否正确?我在这里使用通用存储库实现接口.那么你可以扩展通用存储库以满足特殊需求吗?

关于术语的问题
1)业务对象是否等于域对象?域对象应包含多少逻辑?

2)域模型是EF模型吗?我正在使用Model-First方法.

3)依赖注入 - 我应该使用它吗?我理解它是如何工作的,只是没有得到真正的好处.我和Ninject一起玩.

我认为社区将受益于某种包含代码示例的所有最佳实践的wiki.那里有类似的东西吗?很多样本都非常简单,很多微软样本即使在声称时也不使用这种模式.

提前感谢所有拥有并将帮助我的人.

顺便说一句 - 我认为StackOverflow需要一点,"接受答案"复选框旁边的"买我一个啤酒"按钮:)

entity-framework poco repository-pattern service-layer asp.net-mvc-3

23
推荐指数
1
解决办法
4811
查看次数

使用一系列数字初始化一个int数组

我想初始化一个int数组并用一系列数字填充它:

return new int[].Populate(30,50);

那么我会有一个30,31,32,33 ...... 50的阵列

c# arrays

23
推荐指数
3
解决办法
3万
查看次数