小编Dav*_*Dav的帖子

EF4代码优先:定义对象关系,外键

<RANT_MODE>

EF代码优先方法意味着节省大量时间,但暂时我只看到玩具示例,并花了几个小时试图了解如何使它生成我想要的数据库.但仍然希望尤里卡时刻:-)

<RANT_MODE />

关于问题!

虚拟与具体属性

我试图了解EF如何映射和检索对象关系.什么时候我应该标记一个属性virtual?(public Person Owner { get; set; }与对比一样public virtual Person Owner { get; set; }.)在代码优先的几十个例子中,我看到他们似乎可以互换地使用这些,而没有太多的解释.我所知道的是导航属性(public virtual ICollection<Person> Owners { get; set; })需要是virtual为了使延迟加载成为可能(正确...?),但这在非集合的世界中如何应用?

对象关系和外键

public int OwnerId { get; set; }除了我感兴趣的'main'属性之外,我无法找到关于是否应该包含外键字段()的任何信息public Person Owner { get; set; }.我试着不这样做,EF亲切地自动添加了一个Owner_Id在我的表中命名的int列,似乎理解了我的意图.

Code First的约定("外键"部分)中,EF团队提到"在关系的依赖端包含外键属性是很常见的",并且"Code First现在将推断任何名为''的属性(即OwnerId)[...]与主键具有相同的数据类型,表示关系的外键".IE浏览器.如果我有两个EF将知道他们是相关的.

但除了"异物"本身之外,明确指定持有FK的此类属性是否被视为良好做法?

异物,外键 - 继续

正如我上面提到的,即使我只public Person Owner { get; set; }在我的对象中(例如Event),该表Events将包含Owner_Id由EF自动添加的列.更重要的是,在检索时,我将可以访问属性 …

.net mapping entity-relationship entity-framework code-first

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

如何在Windows上可视化GitHub分支历史记录?

每当我想把我们所有的小团队的项目都转换为git/github时,让我感到痛苦的是,似乎没有一种工具来可视化所有这些社交编码的优点.

当我们开始疯狂分支,分叉和合并时,我觉得我们需要一个工具,让我们以图形方式查看我们的存储库及其众多分支的全貌,以便提出合并它的计划.所有人都回到了一个唯一的真理(谚语起源/主人).

我曾多次尝试谷歌搜索这样一个可视化工具,但空手而归.希望GitHub for Windows可以一劳永逸地解决这个问题,但它显示的是特定检出分支的线性历史记录.

我正在寻找的东西类似于TortoiseHg所具有的 - 一个显示所有分支和提交的图表.你知道这些工具吗?(我们在Windows上.)

windows git version-control github github-for-windows

13
推荐指数
3
解决办法
1万
查看次数

如何在整个站点中定义MVC 3 Razor View Engine中的使用?

我为UrlHelper写了一个简单的扩展方法:

public static class ExtensionMethods
{
    private const string ImagesFolder = "~/Images";

    public static string Images(this UrlHelper url)
    {
        return url.Content(ImagesFolder);
    }
}
Run Code Online (Sandbox Code Playgroud)

以上代码驻留在/Helper/ExtensionMethods.cs.它工作正常,但我需要添加using MyNamespace.Helper;每个我想要使用的cshtml Url.Images().我过去我们会添加另一行web.config:

<system.web>
    <pages>
        <namespaces>
            <add namespace="MyNamespace.Helper"/>
        </namespaces>
    </pages>
</system.web>
Run Code Online (Sandbox Code Playgroud)

但Razor似乎没有采纳上述内容.我尝试添加我的using语句_ViewStart.cshtml,结果相同.

那么,Razor在整个网站上指定使用的方式是什么?

.net web-config razor asp.net-mvc-3

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

Github使用origin/master对上游/ master进行rebase

我对github社交编码很新,并且在遵循github准则方面遇到了麻烦.我将尝试描述发生了什么以及我想要实现的目标 - 希望更有经验的git向导可以帮助我找出到达那里所需的街机命令.

发生了什么

  1. 我在20127月分享了MassTransit .当时它的分支是版本v2.1.1,最后一次提交于20123月29日.
  2. 根据github的建议,我开始编写一个主题分支的一些更改.
  3. 稍后提交一些提交,当该功能完成时,我将我的主题分支合并到我的克隆的本地主服务器中,然后将其推送到github.
  4. 20123月29日以来,MassTransit正在其开发分支上开发.所有这些变化,组成v2.6.0,最近与它的主人合并.

我想做什么

我想得到所有合并到上游/主站的更改.最好是各自的提交,而不是数百个文件的大量提交.因为我在前 上游/主人(2012年3月29日)进行开发,我想有效地需要在3月29日的最后一次上游/主变更和8月8日的第一次提交之间"插入"一些提交,并且然后在那之上添加稍后发生的那些.我怎么做?

(我也不想在这个过程中破坏我的提交/分叉;-)

我尝试了什么

git checkout master
git remote add upstream git://github.com/phatboyg/MassTransit.git
git rebase upstream/master
git push
Run Code Online (Sandbox Code Playgroud)

但是,它不会让我这么做git push,抱怨我的本地提示是在原点后面的10个提交(可能是我在我的主题分支上做的提交,后来合并到origin/master?).

建议?

似乎我可能被建议所困扰.例如.或许最好创建一个单独的分支,例如. …

git github git-rebase github-for-windows

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

MVC 3 Razor _ViewStart中的公共变量

我正在使用MVC 3附带的新Razor引擎构建一个站点(并且喜欢新的语法!).但是,我对使用公共属性/常量感到茫然.我知道使用WebForms我们可以在代码后面添加一个公共属性:

public string ImageFolder { get; set; }
Run Code Online (Sandbox Code Playgroud)

我想在我的视图可以访问的一个全局位置定义重要变量,从CSS文件和图像的路径开始:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
    var ContentFolder = "~/Content";
    var CssFolder = ContentFolder + "/Stylesheets";
    var ImageFolder = ContentFolder + "/Images";
}
Run Code Online (Sandbox Code Playgroud)

我试过把上面的代码块放在_Layout里面_ViewStart.但是,从子视图访问它们失败了.我想过在上面的代码块中定义一个公共属性但是它没有编译.

解决方案?

  • 据我所见,没有人使用Razor背后的代码.
  • 我想我应该能够从默认视图继承并在那里定义我的属性(如Stack中所述).

但我强烈希望应该有一个更简单的方法来做这么简单的事情?

global-variables razor asp.net-mvc-3

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

Json.NET XML转换和TypeNameHandling.Arrays

眼前的问题

在使用使用Json.NET的不同库时遇到此问题.TypeNameHandling.Arrays在将C#对象序列化为JSON时,我们一直在大量使用它们,并在我们的客户端应用程序中在线路的另一端反序列化它们.

但是,似乎Json.NET对XmlNodeConverter这个设置不好用,在反序列化JSON时抛出错误,例如:

{
  'people': {
    '$type': 'System.Collections.Generic.List`1[[MyNamespace.Person, MyDll]], mscorlib',
    '$values': [
      {
        'name': 'Alan'
      },
      {
        'name': 'Bob'
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

原因

抛出异常是因为Json.NET尝试将其解释$values为字符串属性而不是子节点.当.ToString()在XmlNodeConverter.cs:1367周围的空值上调用时,我们得到一个空引用异常.

这里真正的问题可能源于Json.NET在XML中处理数组的方式:它不会产生如下所示的包装器:

<people json:type="System.Collections.Generic.List`1[[MyNamespace.Person, MyDll]], mscorlib">
  <person>
    <name>Alan</name>
  </person>
  <person>
    <name>Bob</name>
  </person>
</people>
Run Code Online (Sandbox Code Playgroud)

...它可以添加自定义json:type属性,但是依赖于隐式分组共享相同标记的元素:

<person>
  <name>Alan</name>
</item>
<person>
  <name>Bob</name>
</item>
Run Code Online (Sandbox Code Playgroud)

这种行为对我未经训练的眼睛来说似乎有点不直观 - 我希望XML中包含一个父元素而不是静默删除.(这也可能就是为什么空元素和单元素数组需要额外的工作,因为这里有很多线程和Json.NET论坛.)

解决方案..?

在这里,我转向社区..!

  1. 你知道任何变通方法,也许是一些让两人玩得很好的设置吗?
  2. 是否一致认为删除父节点是序列化数组的正确方法?

c# xml arrays json json.net

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