gpt4 book ai didi

SubSonic SimpleRepository 更新导致空引用异常

转载 作者:行者123 更新时间:2023-12-04 07:04:14 27 4
gpt4 key购买 nike

在研究 SubSonic 的新 SimpleRepository 时,我发现调用 更新()方法总是抛出 NullReferenceException .这在 3.0.0.3 版本中包含的示例 MVC 下载中也是如此。

有谁知道是否有办法让更新成功?

这是一个例子。 if 语句有效;它添加表并创建记录。再次运行此代码会流向 else 块,并且更新会引发异常。

var repo = new SimpleRepository("c", SimpleRepositoryOptions.RunMigrations);

var user = repo.Single<User>(u => u.Email == "a@b.com");

if (user == null)
{
repo.Add(new User { Email = "a@b.com", Name = "Test" });
}
else
{
user.Name = DateTime.Now.ToString();
repo.Update(user);
}

public class User
{
public int Key { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}

最佳答案

我想我发现了问题。在 SubSonic 源代码中,Update 例程存在一个小缺陷,它在更新查询对象中查询表列表以获取列名。 Linq 查询需要使用列的 QualifiedName 属性,而不是 Name 属性。查询设置(即查询的右侧)使用完全限定名称。

我也冒昧地在 SubSonic 的 GitHub 站点上提交了一个问题:)

对于那些感兴趣的人,问题在 Update.cs(在 Query 文件夹中),第 229 行。

改变这...

var col= table.Columns.SingleOrDefault(
x => x.Name.Equals(s.ColumnName, StringComparison.InvariantCultureIgnoreCase)
);

到这...
var col = table.Columns.SingleOrDefault(
x => x.QualifiedName.Equals(
s.ColumnName, StringComparison.InvariantCultureIgnoreCase
)
);

重建,你就可以开始了。

关于SubSonic SimpleRepository 更新导致空引用异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1360853/

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