asp.net – 存储库是否应该调用另一个存储库?或者存储库是否应
我想弄清楚如何解决这个问题.我必须将一些数据插入到2个表中,然后将它们称为表A和表B.
Table A has these columns AId<PK> A1 A2 A3 Table B has AId<PK> A1 B2 B3 B4 现在我的第一个问题是另一个存储库应该调用另一个我不认为这会解决我目前的问题,但我只想知道这一点以供将来参考? 现在我的问题. 当我在我的存储库层(TableARepository)中调用create来创建表A.我也立即创建了tableB的字段. // linq to sql. TableA myATable = new TableA(); dbContext.myATable.A1 = "hi"; // all these values would come from parameters. dbContext.myATable.A2 = "bye"; dbContext.myATable.A3 = "go"; dbContext.myATable.insertOnSubmit(TableA); dbContext.SubmitChanges(); TableB myBTable = new TableB(); dbContext.myBTable.AId = myATable.AId; dbContext.myBTable.A1 = myATable.A1; dbContext.myBTable.B2 = "2"; dbContext.myBTable.B3 = "3"; dbContext.myBTable.B4 = "4"; dbContext.myATable.insertOnSubmit(TableB); dbContext.SubmitChanges(); 所以我认为这很好,我认为我不需要为此服务层调用myBTable存储库(创建tableB). 现在这是问题所在.当且仅当它不等于“hi”时,TableB表才应该将信息插入到该表中. so param1 != "hi" // insert param1 == "hi" // ignore and only insert table A 所以这意味着我必须像这样包装我的TableB if(param1 != "hi") { TableB myBTable = new TableB(); dbContext.myBTable.AId = myATable.AId; dbContext.myBTable.A1 = myATable.A1; dbContext.myBTable.B2 = "2"; dbContext.myBTable.B3 = "3"; dbContext.myBTable.B4 = "4"; dbContext.myATable.insertOnSubmit(TableB); dbContext.SubmitChanges(); } 现在我不确定我是否应该在这里这样做,因为这看起来几乎像业务逻辑.但同时我不知道如何做这个业务逻辑,因为无论哪种方式我仍然必须传入值插入到create方法,即使它是null(A1是一个可空字段). 所以我应该在TableA.Id,A1中调用tableB服务层传递并检查A1是什么.如果好,那么转到TableB存储库并以这种方式插入它? 所以TableARepostiory – > TableB服务层 – > TableBRepository(如果发现那个值!=“hi”). 所以我不知道该怎么做. 解决方法
不 – 我想不出存储库调用另一个存储库或其他服务的原因.他们唯一关心的问题应该是持久化您的实体并从数据存储中检索实体.除了底层域之外,它们应该对应用程序的大多数方面一无所知.
听起来你假设他们应该是每个表的存储库,这是不正确的.每个聚合根应该有一个存储库,该存储库应该负责将数据存储到所有底层的相关表中.存储库可以有一些与存储数据的位置或方式有关的逻辑,但最好在可能的情况下将其封装在公共区域中. 例如,如果你有人物对象并需要根据性别保存到不同的表,你可以使用继承(if(person is Woman)save here …)或对象的属性(if(person.Gender) == Gender.Female)保存在这里……)或规格(if(FemaleSpecification.IsSatisfiedBy(person))保存在这里……). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP MVC 3在不同的视图中使用不同的布局
- Asp.net mvc 知多少(一)
- asp.net-mvc – Error.aspx – 如何关闭?
- 模板 – ASP.NET MVC 2:如何为集合中的每个项调用DisplayF
- asp.net-mvc-2 – 如何在ASP.NET MVC 2.0中的视图外创建Htm
- ASP.NET将整数绑定到CheckBox的Checked字段
- asp.net-mvc-3 – 在“@”字符后面出现意外的“foreach”关
- ASP.NET Core RC2配置自定义AppSettings
- asp.net-mvc – 将角色添加到ADFS IPrincipal
- asp.net-core-mvc – 在ASP Net Core 2.0 MVC中检索应用程序
- asp.net-mvc – 图像URL中的&符号MVC导致一个
- asp.net-mvc – 如何在MVC视图中构造if语句
- 请求的ASP.NET窗体身份验证失败 原因:提供的票已
- asp.net-mvc – Ninject.Web.Common抛出Activati
- asp.net-mvc – 在ASP .NET MVC 3中使用XSLT
- razor – ASP.NET MVC 4 – for循环帖子模型集合
- asp.net – 超时已过期.从池中获取连接之前经过的
- asp.net – 可以使用URI模板来匹配URI到路由吗?
- asp.net-mvc – 人们如何使用编辑器/显示模板与H
- asp.net-core – 哪些版本的Windows Server与.NE