小编And*_*rew的帖子

实体框架表拆分:不在同一类型层次结构中/没有有效的一对一外键关系

我正在使用Entity Framework 6和Code-First方法,我希望将两个实体放在同一个表中.我究竟做错了什么?

[Table("Review")]
public class Review
{
    public int Id { get; set; }
    public PictureInfo PictureInfo { get; set; }
    public int PictureInfoId { get; set; }
}

[Table("Review")]
public class PictureInfo
{
    [Key, ForeignKey("Review")]
    public int ReviewId { get; set; }
    public Review Review { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误:实体类型'PictureInfo'和'Review'不能共享表'Review',因为它们不在同一类型层次结构中,或者没有有效的一对一外键关系,它们之间具有匹配的主键.

我究竟做错了什么?

c# entity-framework ef-code-first table-splitting

16
推荐指数
2
解决办法
2万
查看次数

ASP.NET MVC5:想要使用模型绑定更新Collection中的多个项目

所以我有一个User对象集合,它应该是可批量编辑的(同时编辑许多用户).我正在使用Entity Framework将用户输入保存到数据库.

控制器方法从表单获取的集合为null.为什么?另外,BindAttribute是否可以与我的代码中的集合一起使用?

视图:

@model IEnumerable<Domain.User>
@using (Html.BeginForm("UpdateUsers", "Users"))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)
    foreach (var item in Model)
    {
        @Html.HiddenFor(modelItem => item.Id)
        @Html.EditorFor(modelItem => item.FirstName)
        @Html.ValidationMessageFor(model => item.FirstName)
        @Html.EditorFor(modelItem => item.LastName)
        @Html.ValidationMessageFor(model => item.LastName)
        @Html.EditorFor(modelItem => item.Birth)
        @Html.ValidationMessageFor(model => item.Birth)
    }

    <input type="submit" value="Update user data"/>
}
Run Code Online (Sandbox Code Playgroud)

控制器:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult UpdateUsers([Bind(Include = "Id,FirstName,LastName,Birth")] IEnumerable<User> users)
{
    if (ModelState.IsValid)
    {
        foreach (User u in users)
        {
            db.Entry(u).State = EntityState.Modified;
        }
        db.SaveChanges();
    }

    return RedirectToAction("EditUsers");
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc entity-framework model-binding asp.net-mvc-5

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

为什么我的应用程序找不到默认的附属组件en-US资源?

我正在使用WPF创建一个多语言应用程序.我正在使用静态资源,存储在.resx/res文件中的字符串使文本出现在用户的文化中.

这是项目目录结构的一部分:

  • 资源
    • GreetingWindowRes.resx(这是en-US的默认设置)
    • GreetingsWindowRes.de-DE.resx

在.csproj中,我有: <UICulture>en-US</UICulture>

在AssemblyInfo.cs中: [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]

编译后,我可以看到资源文件出现:

  • en-US/MyApp.resources.dll
  • de-DE/MyApp.resources.dll

所以我绑定到GreetingWindow.xaml中的静态字符串资源:

<windows:MyWindowBase x:Class="CommanderDotNET.MyApp.Windows.GreetingWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:windows="clr-namespace:MyApp.Windows"
    xmlns:res="clr-namespace:MyApp.Resources">

    <Label Content="{x:Static res:GreetingWindowRes.FirstGreetingText}" />

</windows:MyWindowBase>
Run Code Online (Sandbox Code Playgroud)

结果令我感到困惑:

  1. 如果将UICulture设置为de-DE,则标签文本将以德语显示.
  2. 如果UICulture设置为en-US,则System.Windows.Markup.StaticExtension会抛出XamlParseException.我为XAML看到的错误必须是原因:

找不到适合指定文化或中性文化的资源.确保在编译时将"MyApp.Resources.GreetingWindowRes.en-US.resources"正确嵌入或链接到程序集"MyApp"中,或者所有所需的附属程序集都是可加载和完全签名的.

我究竟做错了什么?

解:

经过大量的搜索,我在这里找到了一个很好的解释:http: //www.west-wind.com/weblog/posts/2009/Jun/04/Resx-and-BAML-Resources-in-WPF

显然,当使用UltimateResourceFallbackLocation.Satellite+时<UICulture>,您需要同时拥有ResxResource.resx和GreetingWindowRes.en-US.resx文件作为主要语言(讨厌的重复).

但是,如果您只想使用Resx资源,而没有BAML本地化,那么这不是可行的方法,而且情况要好得多.仅使用Resx资源的正确方法:

  • AssemblyInfo.cs中: [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]
  • .csproj:不要添加 <UICulture>
  • 资源命名:ResxResource.resx(主要语言)+ ResxResource.de-DE.resx(附加语言)

c# wpf xaml localization resx

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

响应式图像:img srcset + Bootstrap,加载错误大小的图像

我正在使用带有响应图像的Bootstrap.我想通过向浏览器提供多种图像大小来优化加载时间.根据这篇文章,像这样的srcset的简单方法有利于让浏览器选择最佳图像大小:

<img src="small.jpg" srcset="medium.jpg 1000w, large.jpg 2000w" alt="yah">
Run Code Online (Sandbox Code Playgroud)

我的问题是将它与Bootstrap img-responsive类相结合,即使只需要一个小的图片,也会加载一个大尺寸的图片.

这里的代码示例:Bootply.使用Chrome进行测试,它内置支持srcset支持!(其他一些浏览器需要picturefill.js来识别它.)

如果您复制图像的来源(或在"网络"选项卡中查看Chrome开发者工具),您可以看到750宽度版本被加载,并调整为小图像,即使有较小的版本是最佳的使用.(如果加载picturefill JS来支持img srcset,那么在IE和Firefox中也会发生同样的事情.)

我究竟做错了什么?

responsive-design twitter-bootstrap picturefill srcset

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

IIS Express网址重写模块非常简单的重定向不起作用

我想重定向index.phphome在这个片段。

  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Redirect index.php to home" stopProcessing="true">
          <match url="index.php" ignoreCase="false" />
          <action type="Redirect" url="home" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>      
  </system.webServer>
Run Code Online (Sandbox Code Playgroud)

我正在运行IIS Express 8.5。对于http://localhost/index.php,没有重定向发生,我得到的是index.php和相同的旧404。试图删除浏览器缓存没有帮助。任何的想法?

我无需执行任何操作即可启用Url-Rewrite-Module,对吗?

iis asp.net-mvc web-config iis-express url-rewrite-module

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