我是域驱动设计的新手,但想要学习它并将其用于新的应用程序.我将使用Entity Framework进行数据访问.
到目前为止的基本布局是:
ASP.NET MVC和其他客户端(移动设备等)
|
Web服务
|
域模型(服务,存储库,聚合,实体和值对象)
|
数据访问层(实体框架)
|
数据存储(SQL Server)
在数据访问层和域模型之间传输数据的最佳方法是什么?我认为域模型中的实体是POCO对象,它们应该映射到Entity Framework对象/从Entity Framework对象映射.这是一个好的解决方案吗?
如果是这样的话:
这种映射应该如何以及在何处发生?(域模型层或数据访问层)
我应该在何处以及如何查询实体框架(即根据搜索返回列表)?
c# domain-driven-design entity-framework visual-studio-2008 object-object-mapping
是否可以实现以下代码?我知道它不起作用,但我想知道是否有解决方法?
Type k = typeof(double);
List<k> lst = new List<k>();
Run Code Online (Sandbox Code Playgroud) 我有一个正则表达式如下:
^/[a-z0-9]+$
Run Code Online (Sandbox Code Playgroud)
这匹配字符串,如/hello或/hello123.
但是,我希望它排除一些字符串值,如/ignoreme和/ignoreme2.
我尝试了一些变种,但似乎无法正常工作!
我最近的微弱尝试是
^/(((?!ignoreme)|(?!ignoreme2))[a-z0-9])+$
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激:-)
我记得在做SQL查询时读到引用的东西,当你引用某些东西时,它变成了一个字符串.我还读到不应该引用数字.现在,我找不到报价,我需要刷新记忆,看看我是否应该引用数字.
如果您在团队中并且程序员为您提供了创建,读取,更新和删除方法的界面,那么如何避免类型切换?
引用清洁代码敏捷软件工艺手册:
public Money calculatePay(Employee e)
throws InvalidEmployeeType {
switch (e.type) {
case COMMISSIONED:
return calculateCommissionedPay(e);
case HOURLY:
return calculateHourlyPay(e);
case SALARIED:
return calculateSalariedPay(e);
default:
throw new InvalidEmployeeType(e.type);
}
}
Run Code Online (Sandbox Code Playgroud)
这个功能有几个问题.首先,它很大,当添加新的员工类型时,它会增长.其次,它显然不止一件事.第三,它违反了单一责任原则7(SRP),因为改变的原因不止一个.第四,它违反了开放封闭原则8(OCP),因为每当添加新类型时它必须改变.但是这个函数最糟糕的问题可能是有无限数量的其他函数具有相同的结构.例如,我们可以
isPayday(Employee e, Date date),
Run Code Online (Sandbox Code Playgroud)
要么
deliverPay(Employee e, Money pay),
Run Code Online (Sandbox Code Playgroud)
或许多其他人.所有这些都具有相同的有害结构.
这本书告诉我使用工厂模式,但这让我觉得我不应该真正使用它.
再次引用这本书:
这个问题的解决方案(参见清单3-5)是将switch语句埋在一个抽象工厂9的地下室,永远不会让任何人看到它.
switch语句难看吗?
我想知道,如果我想切换麦克风的静音/取消静音,编码会是什么.我正在制作一个程序,可以在后台运行并拾取按键事件并切换麦克风的静音/取消静音.任何编码的任何帮助都会非常有帮助.我是C#的新手,这只是一个我想做的非常简单的程序.这就是它所做的一切,它是否会监听空格键的按键,即使程序在后台,然后当按下空格键时它会使麦克风静音/取消静音.
感谢您的帮助!
在将一个字段分配给另一个字段时,C#是仅仅复制数据还是实际创建链接?在这个文章有游戏引擎结构的一个例子.那里的编码器包含其父组件.在C#中,它们只包含父副本,还是引用它?
示例代码:
class World
{
...
public void Update()
{
...
ent.OnAttach(this);
...
}
...
}
class Entity
{
...
public void OnAttach(World world)
{
world_ = world;
}
...
}
Run Code Online (Sandbox Code Playgroud)
Entity对象现在可以访问World对象并可以访问它的字段和方法,就像在artice中一样吗?(或者我误解了代码?)
到目前为止,我已经主要接触过OO编程,并期待学习一门函数式语言.我的问题是:
我正在使用Enumerable.ToDictionary从linq调用创建一个Dictionary:
return (from term in dataContext.Terms
where term.Name.StartsWith(text)
select term).ToDictionary(t => t.TermID, t => t.Name);
Run Code Online (Sandbox Code Playgroud)
该调用是否会获取每个术语的全部内容,还是仅从我的数据提供者中检索TermID和Name字段?换句话说,如果我这样写它,我会保存自己的数据库流量:
return (from term in dataContext.Terms
where term.Name.StartsWith(text)
select new { term.TermID, term.Name }).ToDictionary(t => t.TermID, t => t.Name);
Run Code Online (Sandbox Code Playgroud) 我正在寻求以更加pythonic的方式做以下事情的建议.
考虑:
class MyObj(object):
def __init__(self):
self.dict_properties = {}
Run Code Online (Sandbox Code Playgroud)
假设我有一个包含多个MyObj实例的列表:
mylist = [<__main__.MyObj object at 0x1005e3b90, ...]
Run Code Online (Sandbox Code Playgroud)
现在我想mylist根据dict_propertiesMyObj中某个键的值进行排序.
工作是什么:
mylist.sort(lambda x,y: cmp(x.dict_properties['mykey'],
y.dict_properties['mykey']))
Run Code Online (Sandbox Code Playgroud)
但这几乎感觉不到pythonic.
有更好的方法(也许使用operator.attrgetter)?
c# ×4
data-members ×1
enumerable ×1
generics ×1
instance ×1
keypress ×1
linq ×1
microphone ×1
mute ×1
oop ×1
paradigms ×1
python ×1
regex ×1
sorting ×1
sql ×1
todictionary ×1
types ×1