- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Entity Framework 将一个对象插入到我的数据库中,其中两个属性代表 SQL Server soundex 函数的结果,但我找不到任何指向正确方向的东西。
我的代码的一个大大简化的例子:
C#对象
public class Person{
string FirstName
string LastName
string FirstNameSE
string LastNameSE
}
表结构:
FirstName varchar(50)
LastName varchar(50)
FirstNameSE varchar(4)
LastNameSE varchar(4)
插入方法
public static void InsertIntoDatabase(Person vPerson){
using (var db = new DatabaseContext()) {
db.People.Add(vPerson);
db.SaveChanges();
}
}
这可行,但我需要将 FirstNameSE 和 LastNameSE 分别设置为 soundex(FirstName) 和 soundex(LastName),我不知道如何在插入时执行此操作。
我发现了如何在 LINQ to Entities 选择语句中使用 SqlFunctions 类,但是当我尝试插入数据时这对我没有帮助。
最佳答案
我认为您可能无法进行几次往返。这样的事情可能就足够了(为简洁起见省略了错误处理):
public static void InsertIntoDatabase(Person vPerson){
using (var db = new DatabaseContext()) {
var soundExQuery = db.People.Select(p =>
new {
FirstNameSE = SqlFunctions.SoundCode(vPersion.FirstName),
LastNameSE = SqlFunctions.SoundCode(vPersion.LastName)
}
).Take(1);
var result = soundExQuery.ToArray();
vPerson.FirstNameSE = result[0].FirstNameSE;
vPersion.LastNameSE = result[0].LastNameSE;
db.People.Add(vPerson);
db.SaveChanges();
}
}
往返一次获取声音代码,然后插入它们。
是的,它不是很干净,但我认为您唯一的其他选择是直接使用 SQL。
db.ExecuteStoreCommand(
@"INSERT INTO People (FirstName, LastName, FirstNameSE, LastNameSE)
VALUES ({0}, {1}, SOUNDEX({0}), SOUNDEX({1}))"
, vPerson.FirstName, vPerson.LastName);
请注意,ExecuteStoreCommand
会自动执行 SQL 参数化。 (它不是 string.Format
)。
http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.executestorecommand.aspx
关于c# - 如何在 Entity Framework 插入上使用 SqlFunctions.SoundCode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13608105/
我有一个公开 IQueryable 的存储库和一个处理特定查询的服务,这里有一些使用 DbFunctions 的方法。为了可测试,我创建了一个带有静态元素列表的假存储库并将其注入(inject)到服务
我想查询一个有多行的表,每行都有一个 timestamp,数据每隔 10 分钟出现一次。我想找到任何丢失数据的开头,即没有 timestamp 等于下一个十分钟间隔的地方,如下所示: select a
我正在尝试做这样的事情: SELECT round(song.rating), count(song.song_id) FROM song GROUP BY round(song.rating); 我
我有一个业务层调用,其工作方式如下: CustomerRepository.Get(c => SqlFunctions.PatIndex("%" + arg + "%", c.FirstName));
我需要在表达式中使用 SqlFunctions.PatIndex。 Func, KendoFilterDescription, IQueryable> appendFilter =
我需要查询基于每一天的计数以及按相同条件分组。生成的查询应该类似于 select SendTo, dateadd(dd, 0, da
我在代码中有类似的东西 SqlFunctions.StringConvert( (double?) x.Latitude) 但它总是返回一个整数,尽管它有一个纬度值。 有什么帮助吗? 最佳答案 Sql
我有一个查询,我需要比较实体中日期时间属性的 24 小时格式 Hour 和 24 小时时间字符串 例子: var time = "14:00"; var results = db.Table.Wher
此代码产生错误: void GetLog() { List logs = null; using (TESTEntities ctx = new TESTEntities())
请考虑这个查询: from r in ent.MyTable group r by new { r.EmployeeName, r.EmployeeID } into g let c = " (" +
我有一个列表,其中包含我使用的所有不同的帐户名称前缀 (a-z) var accounts = this.SessionManager.GetActiveSession().QueryOver();
有什么区别?都是在获取数据存入内存之前在sql端执行函数吗? 附言:两者都用于 linq to entities。 最佳答案 如文档所述EntityFunctions Provides common
我正在将应用程序迁移到 .net 核心。但 SqlFunctions.StringConvert() 在 .netcore 中不起作用。 我正在使用以下代码: using (var entity =
我有以下 LINQ-to-Entities 查询,用于检索与给定日期 (dte) 的日期部分匹配的记录: Dim qry = entities.Works.Where(Function(w) w.Jo
Entity Framework (EF) Core 2.0 中的 SqlFunctions 等效项是什么? 我正在尝试将其转换为 EF Core private static readonly Me
在我的 ViewModel 中,我返回以下下拉列表: public IEnumerable Statuses { get { using
我一直在学习表达式并使用下面的代码添加构建针对数据库模型的表达式(EF4 - ORACLE 而不是 SQL!) 这对 Oracle 非常有效,并允许我动态地构建谓词,例如 "CustomerId",
我有一个 SqlServer 项目,其中包含一个非常简单的表值函数测试:- [SqlFunction(TableDefinition = "forename nvarchar(50)", FillRo
我有以下代码 DateTime now = DateTime.UtcNow; var allItemsOver64 = _inventoryContext.Items.Where(i => (S
我有一个简单的 LINQ-to-Entities 查询,如下所示: var BillingNumbers = from o in dbcontext.Orders
我是一名优秀的程序员,十分优秀!