gpt4 book ai didi

c# - 如何在 Entity Framework 插入上使用 SqlFunctions.SoundCode?

转载 作者:行者123 更新时间:2023-11-30 16:21:02 25 4
gpt4 key购买 nike

我正在尝试使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com