在插入新记录之前检查记录是否存在

我第一次使用Ado.netentity framework,我需要在将其插入数据库之前检查该记录是否存在。 我最好搜索是否存在AuthodSSID而不是密钥(AuthorID)。 我正在使用VS2010,Framework 4. System.Data.Entity是3.5.0.0。 我用Google搜索,但没有找到这个问题的答案。 PublishingCompanyEntities publishContext; publishContext = new PublishingCompanyEntities(); private void createNew_Click(object sender, EventArgs e) { Author newAuthor = new Author(); newAuthor.FirstName = firstName.Text; newAuthor.LastName = lastName.Text; newAuthor.AuthodSSID = 20; newAuthor.AuthorID = 10 //Check if record exist here publishContext.AddToAuthor(newAuthor);//insert if does not exist }

String.comparison性能(带修剪)

我需要做很多高性能的不区分大小写的字符串比较,并意识到我这样做.ToLower()。Trim()真的很愚蠢,因为所有的新字符串都被分配了 所以我挖了一点,这种方式似乎更可取: String.Compare(txt1,txt2, StringComparison.OrdinalIgnoreCase) 这里唯一的问题是我想忽略前导或尾随空格,即Trim(),但如果我使用Trim,我对字符串分配也有同样的问题。 我想我可以检查每个字符串,看看它是StartsWith(“”)还是EndsWith(“”)然后才修剪。 要么指出索引,要么计算每个字符串的长度并传递给string.Compare覆盖 public static int Compare ( string strA, int indexA, string strB, int indexB, int length, StringComparison comparisonType ) 但是这看起来相当混乱,如果我不为两个字符串上的尾随和前导空白的每个组合制作一个非常大的if-else语句,我可能不得不使用一些整数…所以任何优雅解决方案的想法? 这是我目前的提议: public bool IsEqual(string a, string b) { return (string.Compare(a, b, StringComparison.OrdinalIgnoreCase) == 0); } public bool IsTrimEqual(string a, string b) { if (Math.Abs(a.Length- b.Length) > 2 ) // […]

通用集合中的多态类型参数

为什么C#编译器不允许generics集合中的多态类型(T)参数(即List [T])? 以“A”和“B”为例,其中“B”是“A”的子类 class A { } class B : A { } 并考虑一个带有’A’类型列表的函数 void f(List aL) { } 用“B”类型列表调用 List bL = new List(); f(bL); 给出以下错误 ERROR: cannot convert from List to List 违反了什么语义规则? 除此之外,还有一个“优雅”的意思,除了循环和铸造每个元素(我想要一些糖)? 谢谢。

Visual Studio:添加项目/添加为链接而不仅仅是添加

我是视觉工作室的新手,来自delphi。 我有一个目录树,里面装满了.cs文件(root是\ Common)。 我还有一个完整的应用程序目录树(root是\ Applications) 最后,我有一个装满Assemblies的树(root是\ Assemblies) 我想将.cs文件保存在Common树和所有环境voodoo(解决方案,项目,设置,元数据,调试数据,bin等)中。 所以,举一个简单的例子,我有一个名为PdMagic.Common.Math.dll的程序集。 解决方案和项目位于\ Assemblies \ Common \ Math中。 它的所有源(.cs)文件都在\ Common \ Math中。 (matrix.cs,trig.cs,mathtypes.cs,mathfuncs.cs,stats.cs等) 当我使用Add Existing Item将matrix.cs添加到我的项目时,它的副本将添加到\ Assemblies \ Common \ Math文件夹中。 我只是想参考一下。 我不希望有多个副本。 我已尝试添加现有项目,并使用下拉菜单“添加链接”而不是“添加”,这似乎做我想要的。 问题:这种事情的“最佳实践”是什么? 大多数人只是将这些.cs文件放在与项目相同的文件夹中吗? 为什么“添加链接”不是默认值? 谢谢!

以不同的方式使用Razor视图引擎

我认为如果我可以使用新的MVC Razor View引擎作为邮件合并技术会很有趣。 它仍然可以是MVC网站的一部分,而不必是独立的控制台应用程序。 例: string myTemplate = “Hello @Name, How are you today?”; ViewModel.Name = “Billy Boy”; string output = RazorViewEngineRender( myTemplate, ViewModel ); 那么string output = “Hello Billy Boy, How are you today?” 主要的是我希望模板是从字符串而不是视图或部分视图驱动的。 有谁知道这是否可能? 更新: Ben和Matt在codeplex上做了一个项目: http: //razorengine.codeplex.com/

简单的WPFcomboboxfilter

我搜索谷歌寻求一个简单的解决方案,但没有运气。 我有一个标准的WPFcombobox,我只希望能够根据用户在combobox具有焦点时键入的前2或3个字母来过滤显示的列表。 我尝试了一些编码,包括一些lamba表达式,但错误“System.NotSupportedException”不断被抛出指定“combobox.Items.Filter”的行。 我没有使用MVVM,只是希望这个简单的function可供用户使用。 请帮忙! PS IsEditable,IsTextSearchEnabled和StaysOpenOnEdit属性设置为true,但尚未实现所需的function。

为什么我不能通过使用Int获得百分比

请原谅我的编程知识。 我知道这是一件简单的事情,但我不明白为什么结果总是为什么。为什么十进制会很好? int a = 100; int b = 200; decimal c = (a / b) * 100; 非常感谢。

c#中For循环的时间延迟

如何在一定的旋转后在循环中使用时间延迟? 假设: for(int i = 0 ; i<64;i++) { …….. } 我希望在每8次旋转后延迟1秒。

如何检查Datarow值是否为null

请告诉我,如果需要返回string这是在DataRow中检查NULL的正确方法 Convert.ToString(row[“Int64_id”] ?? “”) 或者应该像检查DBNull.Value一样。 需要比这更小 if(row[“Int64_id”] != DBNull.Value){…}else if{}

配置在Hangfire上每15分钟执行一次的cron作业

我正在使用Hangfire,非常喜欢这个软件! 但我缺少的一件事是如何添加每隔几分钟执行一次的定期工作(例如每15分钟执行一次)。 有没有办法实现这个目标?