我正在尝试更新EF 5.0.0-rc代码优先类库的数据模型.Up()方法中的第一个命令是
DropForeignKey("dbo.ChileInventory", new[] { "LotInventoryItemTypeId", "ChileProductId" }, "dbo.ChileProducts");
Run Code Online (Sandbox Code Playgroud)
但我得到一个SqlException:'FK_dbo.ChileInventory_dbo.ChileProducts_LotInventoryItemTypeId_ChileProductId'不是约束.无法删除约束.
我认为错误的原因是因为我的ChileProducts类从它的基类得到了它的关键属性.由于DropForeignkey方法没有接受主列名称的重载,我相信EF无法确定要删除的正确约束.我还应该指出,异常消息中显示的约束名称与数据库中的约束名称不匹配(因此错误...)
您可以在下面找到数据模型和迁移方法.但首先要快速了解迁移背后的变化性质:InventoryBase类的每个衍生产品都通过InventoryTypeId和[InventoryTypeSpecific] ProductId的组合键定义产品类型.例如,ChileInventory会将其特定的智能类型类型识别为InventoryItemTypeId = [ChileInventoryTypeId]和ChileProductId = [ChileProductId].PackagingInventory会将其包装类型标识为InventoryItemTypeId = [PackagingInventoryTypeId]和PackagingProductId = [PackagingProductId].等等.
我正在努力推出的模型更改是将[InventoryTypeSpecific] ProductId从每个InventoryBase衍生产品升级到基础.这将导致所有InventoryBase派生对象共享一个公共ProductId属性,该属性与InventoryItemTypeId一起将启用从InventoryBase到ProductBase的导航; 这在以前的型号中是不可能的.
在此先感谢您的建议和考虑.--Vinney
public abstract class ProductBase
{
[Key]
[Column(Order = 0)]
public virtual int InventoryItemTypeId { get; set; }
[Key]
[Column(Order = 1)]
public virtual int Id { get; set; }
[StringLength(150)]
public virtual string Name { get; set; }
[ForeignKey("InventoryItemTypeId")]
public virtual InventoryItemType InventoryItemType { get; set; }
public virtual bool IsActive { get; …Run Code Online (Sandbox Code Playgroud) 我注意到我认为T4MVC有些奇怪的行为.具体来说,我正在尝试为可选参数值为null的操作构建一个ActionLink(使用HtmlHelper).这在大多数情况下都可以正常工作.但是,如果当前路由与构建ActionLink的路径相同且OptionalParameter具有非null值,则生成的ActionLink将从当前路径上下文指定可选参数的值.
这是一个罗嗦的解释,我认为代码将有助于澄清.
public virtual ActionResult Today(int? lineNumber = null)
{
return Index(DateTime.Today, DateTime.Today, lineNumber);
}
Run Code Online (Sandbox Code Playgroud)
context.MapRoute(
"TodaysProductionSchedules",
"Production/{Controller}/Today/{lineNumber}",
new
{
area = AreaName,
controller = MVC.Production.ProductionSchedules.Name,
action = MVC.Production.ProductionSchedules.ActionNames.Today,
lineNumber = UrlParameter.Optional
});
Run Code Online (Sandbox Code Playgroud)
@Html.ActionLink("Show Today", MVC.Production.ProductionSchedules.Today(null))
Run Code Online (Sandbox Code Playgroud)
正如我之前提到的,如果我当前没有映射到此路由的视图,则将正确生成链接.但是,如果当前视图确实映射了此路由,并且我省略了值或提供null(如razor片段中所示),则lineNumber参数将从当前路由值中获取其值.
我认为这可能是T4MVC中的一个错误,所以我也会在T4MVC codeplex网站上发布这个主题的链接.提前致谢!
我正在尝试从运行Windows 8 Pro的VS 2012 Pro发布MVC4应用程序.但是,这会导致发布根目录中的空目录(由发布设置定义).我有部署项目的"此项目中的所有文件"选项,我不会尝试发布任何数据库.另外,我只想尝试本地发布.
下面是输出窗口的片段.我将不胜感激任何解决此问题的建议.我已经尝试修复,卸载和重新安装VS.
2>Done building project "MyProject.Mvc".
2>Publishing folder /...
2>
========== Build: 1 succeeded, 0 failed, 5 up-to-date, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)
最好的问候,Vinney
Knockouters,
我已经开始依赖于with绑定来建立上下文嵌套.虽然我喜欢KO在某些情况下根据绑定元素的状态操纵DOM的方式,但有时候我只想要在不删除DOM的情况下绑定含义.
有谁知道是否有可能在单个元素绑定级别上阻止DOM操作?
谢谢,温妮
我正在写一个HtmlHelper扩展,我需要按名称搜索模板的存在.所讨论的模板可以是显示器或编辑器模板,具体取决于上下文.我最初的想法是使用ViewEngines.Engines.FindPartialView方法.但是,似乎此方法不搜索~/Views/Shared/DisplayTemplates和~/Views/Shared/EditorTemplates目录.
我想这是有充分理由的.毕竟,如果ViewEngine没有上下文的其他信息,如何知道是否返回显示或编辑器模板?
因此,这导致了一个问题:如何搜索特定的EditorTemplate/DisplayTemplate我考虑将自定义视图引擎添加到ViewEngines集合中以包含这些位置.但是,我担心这可能会有问题.
我主要担心的是DisplayTemplate/EditorTemplate视图可能会出于意外情况而提供.有没有其他人认为这是一个问题?
仅在必要时新建特定DisplayTemplateViewEngine/ EditorTemplateViewEngine实例并使ViewEngines集合清除此特定功能是否更好?
还有什么我想念的吗?
我遇到了CI构建服务器的问题,其中PostSharp导致构建失败并显示以下消息:The assembly 'yada-yada.dll' uses non-licensed features (Basic Features). [...].我们正在使用当前版本的PostSharp(3.1.52),并且在开发人员拥有注册的Express许可证的本地开发环境中对库没有任何麻烦.
据PostSharp文档,构建服务器不应该需要一个许可证.但是,他们承认自动化识别可能会失败:
如果此检查因任何原因无效,您可以使用构建服务器的任何许可用户的许可证密钥.这不会被视为许可侵权.但是,最好将问题报告给我们的技术支持,以便我们可以修复检测算法.
建议在源代码管理中包含许可证密钥.
我试图测试这个理论,但我似乎无法访问我的实际PostSharp Express许可证!PostSharp选项也没有任何帮助:
PostSharp许可选项http://i58.tinypic.com/2qi8bom.png
有人有主意吗?谢谢!
我正在尝试创建一个自定义绑定,它将封装一系列css绑定.具体而言,而不是:
data-bind="css: { success: PickInventoryViewModel.ajaxSuccess, fail: PickInventoryViewModel.ajaxFailure, working: PickInventoryViewModel.ajaxWorking }"
Run Code Online (Sandbox Code Playgroud)
我要这个:
data-bind="ajaxStatus: PickInventoryViewModel"
Run Code Online (Sandbox Code Playgroud)
的ajaxStatus结合将是一个自定义绑定这将启动相应的CSS绑定,而不是在我的应用程序洒此实现细节.但是,cssbindingHandler没有init函数,所以我不完全确定如何使这个工作.
我想我可以订阅每个observable并ko.bindingHandlers['css'].update在观察到的值时调用true.我考虑的另一个可能的选择是将css绑定注入到html元素并重新绑定节点(我认为这applyBindingsToNode就是这个小提琴中的例子.
有没有人有更好的主意?
谢谢,温妮