<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
每当我想把我们所有的小团队的项目都转换为git/github时,让我感到痛苦的是,似乎没有一种工具来可视化所有这些社交编码的优点.
当我们开始疯狂分支,分叉和合并时,我觉得我们需要一个工具,让我们以图形方式查看我们的存储库及其众多分支的全貌,以便提出合并它的计划.所有人都回到了一个唯一的真理(谚语起源/主人).
我曾多次尝试谷歌搜索这样一个可视化工具,但空手而归.希望GitHub for Windows可以一劳永逸地解决这个问题,但它显示的是特定检出分支的线性历史记录.
我正在寻找的东西类似于TortoiseHg所具有的 - 一个显示所有分支和提交的图表.你知道这些工具吗?(我们在Windows上.)
我为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在整个网站上指定使用的方式是什么?
我对github社交编码很新,并且在遵循github准则方面遇到了麻烦.我将尝试描述发生了什么以及我想要实现的目标 - 希望更有经验的git向导可以帮助我找出到达那里所需的街机命令.
我想得到所有合并到上游/主站的更改.最好是各自的提交,而不是数百个文件的大量提交.因为我在前 上游/主人(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?).
似乎我可能被建议所困扰.例如.或许最好创建一个单独的分支,例如. …
我正在使用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.但是,从子视图访问它们失败了.我想过在上面的代码块中定义一个公共属性但是它没有编译.
但我强烈希望应该有一个更简单的方法来做这么简单的事情?
在使用使用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论坛.)
在这里,我转向社区..!
.net ×2
git ×2
github ×2
razor ×2
arrays ×1
c# ×1
code-first ×1
git-rebase ×1
json ×1
json.net ×1
mapping ×1
web-config ×1
windows ×1
xml ×1