我之前的问题让我再次思考层,存储库,依赖注入和这样的架构.
我的架构现在看起来像这样:
我首先使用EF代码,所以我只创建了POCO类和上下文.这创建了db和model.
级别更高的是业务层类(提供者).我为每个域使用不同的提供程序...比如MemberProvider,RoleProvider,TaskProvider等.我在每个提供程序中创建我的DbContext的新实例.
然后我在我的控制器中实例化这些提供程序,获取数据并将它们发送到Views.
我的初始架构包括存储库,我之所以摆脱它是因为我被告知它只会增加复杂性,所以为什么我不仅仅使用EF.我想这样做..直接从控制器使用EF,但我必须编写测试,它与真正的数据库有点复杂.我不得不假装 - 以某种方式模拟数据.因此,我为每个提供商创建了一个接口,并使列表中的硬编码数据成为假提供者.有了这个,我回到了一些东西,我不知道如何正确地进行.
这些事情开始过于复杂化......许多方法和"模式"......它产生了太多的噪音和无用的代码.
是否有任何SIMPLE和可测试的体系结构用于使用Entity Framework创建和ASP.NET MVC3应用程序?
architecture asp.net-mvc unit-testing entity-framework code-first
我认为,这是现在非常普遍的情况,所以令人惊讶的是,我很难找到适合它的好的和干净的解决方案(即使在这里也是如此).
我有我的ASP.NET MVC3 Web应用程序使用Entity Framework 4.1与代码优先方法(使用DatabaseInitializer种子默认数据).我还尝试了两个数据库选项:SQL Express 2008 R2和SQL Compact 4.一切都在本地工作正常.
现在我想托管我的应用程序,所以我发现托管(中间一个称为'最佳'),最后(在一些问题之后)进入状态,我得到中等信任错误(我相信).
应用程序尝试执行安全策略不允许的操作.要授予此应用程序所需的权限,请与您的系统管理员联系或在配置文件中更改应用程序的信任级别.
让我们假设我不能以任何方式配置托管,我不认为,他们会把我转变为完全信任.
我该怎么办,让我的应用程序在中等信任托管上工作?
编辑:我找到了一些通常在本地开发中传播设置媒体信任的答案,就这样做,所以我的问题现在可能是这样的:
什么是"前5个原因"为什么您的ASP.NET MVC3 EF 4.1应用程序无法在中等信任下工作?
编辑:我已经为此添加了赏金,因为我希望看到一些讨论......或者至少更多的oppinions/experience,其中包含的不仅仅是"在本地开发中设置中等信任".也许这里没有什么可讨论的,但我只是好奇,因为我已经花了更多的时间在这上面,而不是我想要的.
我试图在这里找到类似的问题,但似乎你们只比较这些工具,每个人都知道它为什么这么棒:)
嗯..我没有.我知道,这些工具"非常酷,并且会在一分钟内将我变成一个超级编码器".但我想知道为什么?
它们中有什么特别之处,它们是如此昂贵(对于一个插件)?
日常使用中的一些真实例子会很好.
我所看到的是一个插件,它与使用visual studio可以实现的大致相同,但具有不同的快捷方式.
Dunno如何恰当地命名.我在m:n关系中有两个实体:成员和角色.
public class Role
{
public int Id { get; set; }
public string Title { get; set; }
public ICollection<Member> MembersInRole { get; set; }
}
public class Member
{
public int Id { get; set; }
public string Name { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public ICollection<Role> Roles { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我已经制作了一些种子数据:http :
//i56.tinypic.com/2vjvj1w.png
并写了测试:http :
//i54.tinypic.com/112916b.png
问题是,我的会员实体没有分配角色,即使我在上下文中创建它们(如图所示).我不知道出了什么问题.数据库中的表似乎没问题.我不确定上下文实例是否有问题.但它应该没问题,因为我一直在处理种子数据.
entity-relationship many-to-many entity-framework ef-code-first entity-framework-4.1
我想根据使用其属性的函数的结果来过滤我的entites.
即.我有这样的实体:
public class Lorem
{
public int A {get;set;}
public int B {get;set;}
public int C {get;set;}
public double DoMath(int externalValue)
{
// real implementation is longer and more complex
if(A==B) {
// some calculations
return 0.2;
}
if(B==C) {
// some calculations
return 0.9;
}
else return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我正在查询实体,我想只获得DoMath> 0的那些实体.
// simplified scenario for example purpose
int someValue = 95;
// working with Entity Framework 4.1 Code First
var filtered = db.Lorems.Where(x=>x.DoMath(someValue) > 0);
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
LINQ …
我可能在某种程度上损害了大脑的atm,因为这样的事情应该是微不足道的。
我有一堆手动绘制的svg圆(通过React)。然后,我将d3拖动行为附加到所有它们。应用了拖动行为并执行了拖动功能,但是当我拖动这些圆圈之一时,我无法做出相应的响应,因为我不知道哪个圆圈被移动了。在哪里可以获取被拖动元素的ID?
我检查了其他几个问题,然后发现了一些疯狂的过滤器解决方案……不可能。
我也偷看了文档并找到了该subject属性。但是,在我尝试过的所有地方都为null。
我的代码:
componentWillUpdate() {
let nodes = d3.selectAll("circle");
const dragFn = (d,i) => {
d3.event.sourceEvent.stopPropagation();
this.props.onNodeDrag(I_NEED_AN_ID_HERE);
}
const dragBehavior = d3.behavior.drag();
dragBehavior.on('drag', dragFn);
dragBehavior.on('dragstart', () => {
d3.event.sourceEvent.stopPropagation();
});
nodes.call(dragBehavior);
}
Run Code Online (Sandbox Code Playgroud) asp.net-mvc ×2
c# ×2
architecture ×1
code-first ×1
coderush ×1
d3.js ×1
deployment ×1
iis ×1
lambda ×1
many-to-many ×1
reactjs ×1
resharper ×1
unit-testing ×1