小编Vin*_*lly的帖子

当键在基类中时,EF迁移DropForeignKey失败

我正在尝试更新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)

ef-migrations entity-framework-5

6
推荐指数
2
解决办法
5965
查看次数

T4MVC当前上下文隐含的OptionalParameter值

我注意到我认为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网站上发布这个主题的链接.提前致谢!

asp.net-mvc t4mvc

6
推荐指数
1
解决办法
819
查看次数

在Visual Studio 2012中发布MVC项目结果在空文件夹中

我正在尝试从运行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

web-deployment windows-8 visual-studio-2012

5
推荐指数
2
解决办法
4906
查看次数

防止"with"绑定删除DOM元素(Knockout.js)

Knockouters,

我已经开始依赖于with绑定来建立上下文嵌套.虽然我喜欢KO在某些情况下根据绑定元素的状态操纵DOM的方式,但有时候我只想要在不删除DOM的情况下绑定含义.

有谁知道是否有可能在单个元素绑定级别上阻止DOM操作?

谢谢,温妮

dom knockout.js

5
推荐指数
1
解决办法
908
查看次数

按名称查找MVC模板视图

我正在写一个HtmlHelper扩展,我需要按名称搜索模板的存在.所讨论的模板可以是显示器或编辑器模板,具体取决于上下文.我最初的想法是使用ViewEngines.Engines.FindPartialView方法.但是,似乎此方法不搜索~/Views/Shared/DisplayTemplates~/Views/Shared/EditorTemplates目录.
我想这是有充分理由的.毕竟,如果ViewEngine没有上下文的其他信息,如何知道是否返回显示或编辑器模板?

因此,这导致了一个问题:如何搜索特定的EditorTemplate/DisplayTemplate我考虑将自定义视图引擎添加到ViewEngines集合中以包含这些位置.但是,我担心这可能会有问题.

我主要担心的是DisplayTemplate/EditorTemplate视图可能会出于意外情况而提供.有没有其他人认为这是一个问题?
仅在必要时新建特定DisplayTemplateViewEngine/ EditorTemplateViewEngine实例并使ViewEngines集合清除此特定功能是否更好?
还有什么我想念的吗?

asp.net-mvc

5
推荐指数
1
解决办法
1507
查看次数

对构建服务器上的PostSharp许可证问题进行故障排除:在哪里可以找到PostSharp Express的许可证?

我遇到了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

有人有主意吗?谢谢!

postsharp

5
推荐指数
1
解决办法
2614
查看次数

如何用自定义绑定包装css knockout绑定?

我正在尝试创建一个自定义绑定,它将封装一系列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就是这个小提琴中的例子.

有没有人有更好的主意?

谢谢,温妮

knockout.js bindinghandlers

1
推荐指数
1
解决办法
911
查看次数