似乎在EF4中默认启用了延迟加载.至少,在我的项目中,我可以看到它的价值
dataContext.ContextOptions.LazyLoadingEnabled
Run Code Online (Sandbox Code Playgroud)
默认情况下为true.我不想延迟加载,我不想写:
dataContext.ContextOptions.LazyLoadingEnabled = false;
Run Code Online (Sandbox Code Playgroud)
每次我得到一个新的背景.那么有没有办法在整个项目中默认关闭它?
我有一个数据库,我希望从中构建一个EF模型,但我不想包含数据库中的某些列,因为相关列只在服务器上维护,不应被任何应用程序操纵.
这两列都是DateTime(如果这有任何区别),其中一列可以为空,并且由更新时的触发器维护,另一列不可为空,并使用表定义中的默认值进行设置.
我想我正在寻找像Linq2Sql中的"Server Generated"选项; 但我找不到这样的选择.
谁能告诉我如何解决这个问题?
警告:
我一直试图在我的工作地点引入业务对象建模多年,并且由于必须手动操作的附加代码量,它一直被拒绝.由于设计人员和代码生成,EF目前被视为一种可行的解决方案,因此任何涉及手动操作XML的选项都只会让我的其他同事远离EF.因此,我正在寻找可以使用设计器或使用代码完成的任务.
编辑:
我想这里我要找的是......
(a)创建模型的方法,不使用EF引用存储中的列(ssdl),因此不希望以任何方式操作它(b)在创建时以编程方式将"StoreGeneratedPattern"属性设置为属性的方法ObjectContext(简单的答案是在.ssdl中手动操作它,但是如果我从数据库中刷新模型,那么这将被覆盖,我无法沿着.csdl,.msl和.ssdl手动的路径走下去).
我试图运行这个测试:self.assertRaises(AttributeError, branch[0].childrennodes)
和branch[0
]没有属性childrennodes
,所以它应该被抛出AttributeError
,其中assertRaises
应赶上,但是当我运行测试,测试,因为它是抛出一个失败AttributeError
.
Traceback (most recent call last):
File "/home/tttt/../tttt/tests.py", line 504, in test_get_categories_branch
self.assertRaises(AttributeError, branch[0].children_nodes)
AttributeError: 'Category' object has no attribute 'children_nodes'
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在使用带有验证器插件的jQuery.我想用自己的一个替换"必需的"验证器.这很简单:
jQuery.validator.addMethod("required", function(value, element, param) {
return myRequired(value, element, param);
}, jQuery.validator.messages.required);
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.这很好用.但我真正想做的是在某些情况下调用我的函数,以及其余的默认验证器.不幸的是,这结果是递归的:
jQuery.validator.addMethod("required", function(value, element, param) {
// handle comboboxes with empty guids
if (someTest(element)) {
return myRequired(value, element, param);
}
return jQuery.validator.methods.required(value, element, param);
}, jQuery.validator.messages.required);
Run Code Online (Sandbox Code Playgroud)
我查看了验证器的源代码,并且"required"的默认实现在jQuery.validator.messages.required中定义为匿名方法.所以没有其他(非匿名)引用我可以使用的函数.
在调用addMethod并通过该引用调用默认验证器之前,在外部存储对该函数的引用没有任何区别.
我真正需要做的是能够按值而不是通过引用复制默认的必需验证器函数.但经过相当多的搜索,我无法弄清楚如何做到这一点.可能吗?
如果不可能,那么我可以复制原始功能的来源.但这会产生维护问题,除非没有"更好的方法",否则我宁愿不这样做.
我有一个特定的控制器动作被调用两次,除了奇怪之外导致我的应用程序的单个部分出现问题(不是真正的问题,它只是引起我的双重调用).
知道为什么控制器动作每次都要执行两次吗?
我使用ASP.NET MVC和jQuery,并且对我的控制器有很多Ajax请求.
使用部分视图(usercontrols)在加载页面时构建初始视图.然后,如果我需要根据我的Ajax请求追加/替换数据,我会从Json响应中构建HTML.
这种方法让我完全掌控,即.如果出现问题,我可以从控制器获取额外信息,然后根据该信息显示错误消息.
然而,最近我对在部分视图和从Json生成HTML的部分中维护HTML结构所做的所有额外工作感到非常恼火.
我喜欢制作一个jQuery ajax请求,然后让控制器返回PartialView("mypartialview"),然后只使用jQuery替换视图中的HTML.
但是,这样我就无法从控制器中附加额外的数据 - 无论是局部视图给我的是什么 - 或者什么都没有.至少那是我目前的看法.
如果某些验证在我的控制器操作中的某个时刻出错,我不想返回局部视图的HTML.
那么你如何处理这个问题呢?
谢谢阅读.
railstutorial.org有一个建议让我觉得有点奇怪.
class ApplicationController < ActionController::Base
protect_from_forgery
include SessionsHelper
end
Run Code Online (Sandbox Code Playgroud)
将include SessionsHelper
使得可从方法ApplicationController
,是的,但它使他们在任何视图中可用,以及.我知道认证/授权是跨领域的,但这真的是最好的地方吗?
在我看来,这似乎可能过于宽泛.将实现(例如,before_filter
有条件地重定向)的代码(如railstutorial.org示例所示)放在一个更常见的包含视图助手的模块中似乎令人惊讶.
在视图中不严格需要的功能是否可以更好地放在ApplicationController或其他地方?
或者我只是在考虑这个问题?
当Reflection.Emit
用于在运行时构建程序集时,我想在保存到光盘之前验证程序集MSIL.像PEVerify一样,但在运行时.有这样的API吗?
我正在为MVC应用程序构建一些存储库,我正在尝试在存储库之间划分责任的正确方法.在大多数情况下,这是显而易见的.但有一个特殊情况,我不确定正确的答案是什么.
此应用程序的用户需要为其员工跟踪多种类型的时间.为简单起见,我们只考虑两个.我会称他们为"时间卡"和"出勤".这两者之间差异的确切性质并不重要,但您应该注意到最终用户将它们视为完全独立的数据.但我认为,他们认为这些数据完全是分开的数据的原因是他们过去从未真正有机会看到它们.两种类型的记录都有关于编辑记录的几乎完全不同的业务规则,但一般来说,它们也都是员工在特定时间所处位置的记录.两种类型的时间记录都有很多共同的属性,例如总小时数,以及收集时间的雇员.这两种类型都有一些属性,这些属性对于单个类型是完全独特的.我们将这些"额外"属性保存在另一种类型的实例中.所以一般结构如下:
class TimeRecord
{
Person Employee { get; set; }
TimeSpan? Hours { get; set; }
}
class TimeCardData
{
TimeRecord Record { get; set; }
TProperty TimeCardProperty { get; set; }
}
class AttendanceData
{
TimeRecord Record { get; set; }
TProperty AttendanceProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
所以问题是,这里需要多少个存储库?
只有一个存储库的设计会公开在一个列表中返回"时间卡","出勤"记录或两种类型的方法.这对于存储库的客户来说相当方便,但是,在我看来,它有成为一个非常胖的类的真正危险.我认为只是"时间卡"的存储库已经成为系统中最大的存储库之一,即使没有处理"出勤"也只是因为涉及复杂的业务规则.
另一种设计将有一个用于"时间卡"的存储库和另一个用于"出勤"记录的存储库.这具有以下优点:例如"时间卡"的业务规则本身就在某个地方.但是我也希望能够获得所有时间记录的列表,无论其类型如何.目前尚不清楚在这种情况下使用哪个存储库.都?
设计有一个"时间卡"存储库,另一个"出勤"记录存储库,第三个存储库提供所有时间记录的只读列表也是可能的.与2存储库设计一样,这具有以下优点:例如"时间卡"的业务规则本身就在某个地方.现在很清楚从哪里获得组合列表.但我发现从两个不同的存储库中获取相同的记录有点奇怪.
混合方法将使用单个存储库,但将任何业务规则代码(包括记录选择)移动到单独的类型中.在此示例中,单个"时间记录存储库"将聚合业务规则实现类的实例以用于"时间卡"和"出勤"时间.我认为这是我现在喜欢的方法.
我错过了什么?一种设计对另一种设计的任何令人信服的论据?
model-view-controller domain-driven-design repository-pattern
我有一个SitemapActionResult覆盖了ActionResult,并在点击http://www.sprelle.no/Home/SiteMap时提供了一个SEO sitemap.xml .到现在为止还挺好.
不过,我想要的是在Google访问/sitemap.xml时提供sitemap.xml.为了实现这一点,我需要一个看到"sitemap.xml"并指向/ Home/Sitemap的路线.
如何创建此映射(在Routes表中)?
asp.net-mvc ×3
jquery ×2
.net ×1
c# ×1
cil ×1
django ×1
f# ×1
helpers ×1
javascript ×1
json ×1
lazy-loading ×1
peverify ×1
python ×1
ruby ×1
seo ×1
sitemap ×1
sitemap.xml ×1
unit-testing ×1
validation ×1