- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在这一点上纯属好奇,因为 @
解决了我遇到的问题,但为什么 Name
很特别?
我有一个名为 Name
的 EF 实体属性......如果我不把 @
放在 Name
前面,我就不会收到任何类型的错误,但未分配对象的 Name
属性。如果我将 @Name
放在对象初始值设定项中,它会正确分配 Name
:
a = new Author
{
Id = Guid.NewGuid().ToString(),
@Name = "Jason Hater" // Apparently "Name" is quasi-reserved or something...?!?
};
我检查了生成的代码,它只是命名为Name
:
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
[DataMemberAttribute()]
public global::System.String Name
{
get
{
return _Name;
}
//...
}
因此,Name
没有列为 keyword ,那么它为什么特别呢?
好吧,正如@sergey 所建议的,它肯定比我最初想象的要复杂一些。 Entity Framework 有些愚蠢。
这体现在单元测试类中,可能也相关。不幸的是,我现在不确定什么是相关的,什么不是,所以这是整个 [TestInitialize]
方法,在它的底部你可以看到奇怪的事情发生在 context.SaveChanges() 周围
:
[TestClass]
public class EntityConverterTests
{
private Author a;
private Post p, p2, p3;
[TestInitialize]
public void SetupEntities()
{
TestEntities context = new TestEntities();
// Clear it out!
foreach (Comment o in context.Comments) context.Comments.DeleteObject(o);
foreach (Post o in context.Posts) context.Posts.DeleteObject(o);
foreach (Author o in context.Authors) context.Authors.DeleteObject(o);
context.SaveChanges();
a = new Author
{
Id = Guid.NewGuid().ToString(),
Name = "Jason Hater"
};
context.Authors.AddObject(a);
System.Diagnostics.Debug.WriteLine(a.Name); // "Jason Hater"…Yay!
// probably irrelevant from here until context.SaveChanges()…?
p = new Post()
{
Title = "Linkbait!",
Author = a
};
p2 = new Post
{
Title = "Rant #1023",
Author = a
};
p3 = new Post
{
Title = "Polemic in E-flat minor #824",
Author = a
};
a.Posts.Add(p);
a.Posts.Add(p2);
a.Posts.Add(p3);
p.Comments.Add(
new Comment()
{
Body = "Nuh uh!",
Post = p
}
);
p.Comments.Add(
new Comment()
{
Body = "Yeah huh!",
Post = p
}
);
p.Comments.Add(
new Comment()
{
Body = "Third Reich.",
Post = p
}
);
p2.Comments.Add(
new Comment
{
Body = "I laughed, I cried!",
Post = p2
}
);
System.Diagnostics.Debug.WriteLine(a.Name); // "Jason Hater"…great!
context.SaveChanges();
System.Diagnostics.Debug.WriteLine(a.Name); // a.Name is null -> empty string!
}
// …
}
更多内容即将推出,因为现在 @
没有“修复”它——也就是说,现在我仍然在我看到的测试方法中看到 null之前正确...另一个[TestMethod]
中的某些内容可能有所作为,也许...不确定,仍在调查中。尽管如此,为什么围绕 context.SaveChanges()
发生变化?
呃,好吧……不知何故,我的 Name
属性上的 StoreGeneratedPattern
属性在建模 GUI 中被设置为“Identity”。不知道那是怎么发生的。将其更改为“无”可能已经解决了我的问题。但是......我知道当我认为 @
符号已经修复它时我没有改变它......这里仍然有些奇怪。
不管怎样,StoreGeneratedPattern
的错误值是我的分配/保存问题的原因。我不确定为什么我在该设置下观察到一次或多次成功,但原来的问题不再是正确的问题。
最佳答案
在 C# 中,如果您想将关键字转换为标识符,则使用 @
。由于 Name
不是关键字,因此它根本没有任何作用。
这纯粹是一个 C# 规则,在 IL 级别 @
将不再存在,即使标识符的名称与 C# 关键字匹配。因此 Entity Framework 无法检测到差异。
关于c# - 为什么我必须在对象初始值设定项中将 @ 放在 `Name` 前面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21988280/
很高兴和你分享一些有关写python代码的经验,简直就像是品尝一口甜甜的草莓冰淇淋。每当我开始写python代码的时候,就仿佛是开启了一段奇妙的冒险,每一行代码都是我的剧情发展,每一个bug都是我的挑
我有一张看起来像这样的 table , Date Value 01/01/2010 03:59:00 324.44 01/02/2010 09:31:00
我已尽我所能检查但未找到任何 kwds允许您在 y=a-x 上画一条线(例如 pandas )散点图(不一定是最佳拟合线)并将其带到后面(或前面)。 #the data frame ax=df.plo
我已尽我所能检查但未找到任何 kwds允许您在 y=a-x 上画一条线(例如 pandas )散点图(不一定是最佳拟合线)并将其带到后面(或前面)。 #the data frame ax=df.plo
我正在尝试在书签中使用 jquery UI 作为 slider 。并且 jquery ui 要求在普通 jquery 文件之后包含该文件。 所以到目前为止我所尝试的只是将脚本附加到 header ,同
我正在尝试将 div (.portrait_text) 添加到容器 (.gallery_container) 中: 每个图像都会添加到其相应的 .gallery_container 前面。但我也想将
因此,为了避免让自己头疼(反而制造头疼),我试图将一个字符串数组成员放在同名的结构变量前面,但它不起作用并给我一个错误:std::string {aka class std::basic_string
嗨,我的索引页面上的下拉菜单有问题,下拉元素隐藏在我的图像 slider 下方,它位于我的导航栏正下方,我希望能够看到下拉菜单元素,任何帮助将不胜感激非常感谢; 这是我的导航栏 html:
我想在 div 前面移动一个按钮。 http://demo.gbaus.com/index.html在网站中,获取报价按钮不可点击,除非您点击最底部。我希望将它移到前面,以便您可以单击它。 posot
我有一个以时隙为键的 map ,指向分配的客户。并非所有时隙都有指定的客户,它可能既稀疏又密集,所以我坚持使用 map。执行。如果存在分配,则仅存在键。 计数器从槽 1 计数到槽 x,并在每个槽检查分
我有三个 Controller 。一个是 HomeViewController 启动 BlahPageViewController 并且它是单独的页面。其他两个 Controller (BlahPag
我有一个文本区域。我可以设置它的文本 $("#mytextarea").text("foo") 我可以像这样添加到文本区域: $("#mytextarea").prepend("foo") 但是我不能
我喜欢在绘图时生成我自己的网格线,这样我就可以控制刻度线等,我正在用“hist”绘图程序来解决这个问题。 hist(WindSpeed, breaks=c(0:31), freq=TRUE,
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
当我用 Java 发送电子邮件时,如果单词“From”是任何行的第一个单词,则在该单词的开头附加一个“>”字符,我该如何阻止这种情况? 这是我的文字: The following transactio
我有这一行输出 span 标记的名称值: $(this).text($(this).attr("name")); 在“名称”值之前添加字符(特别是美元符号 ($))的最佳方式是什么。 最佳答案 尝试:
在我调用 segue 返回到以前的 View Controller 之一后,我一直在努力解决我的选项卡栏被隐藏的问题。 我读到,在segue之后, View 覆盖了标签栏。有没有办法将标签栏放在 Vi
我的目标是有一个窗口,其中背景有 2 个不同颜色的面板。它们各自覆盖屏幕的特定百分比,并且会定期变化。我通过创建一个 JSplitPane 来做到这一点。但现在我想添加一个 JLabel 在屏幕中间的
我试图让我的导航栏在滚动时出现在正文的顶部。目前它在下面,如图所示。 我还有一个抽屉导航,它在引入 ScrollView 后就停止工作了……我觉得这可能是因为当我单击“汉堡包”图标时,它实际上位于 S
我之前问过类似的问题,但可能不清楚。 我有一个在 Amazon Elastic beanstalk 上运行的 Web 服务 (tomcat 8),它运行良好。然后我在 DomainA.com 上运行网
我是一名优秀的程序员,十分优秀!