gpt4 book ai didi

nhibernate - 没有自动映射 SQL 异常的 Fluent NHibernate,关键字 'User' 附近的语法不正确

转载 作者:行者123 更新时间:2023-12-04 00:10:26 25 4
gpt4 key购买 nike

刚开始使用 NHibernate,在我看来,一切似乎都是正确的,但显然并非如此。当我进行如下所示的单元测试时,我收到回复说关键字“User”附近存在语法错误这是我的用户类:

namespace Users
{
public class User
{
public virtual string firstName { get; set; }
public virtual string lastName { get; set; }
public virtual int Id { get; set; }
}
}

和用户映射(同样在列名称周围没有方括号的情况下运行,结果相同:

namespace Users
{
class UserMap: ClassMap<User>
{
UserMap()
{
Table("User");
Id(x => x.Id).GeneratedBy.Native().Column("[Id]").Not.Nullable();
Map(x => x.firstName).Not.Nullable().Column("[firstName]");
Map(x => x.lastName).Not.Nullable().Column("[lastName]");
}
}
}

名为Framework.cs的配置文件

namespace Users
{
public class Framework
{
private const string ConnectionStr = "Data Source=ERALCH-ESTEPHEN;Initial
Catalog=NHDev;Integrated Security=True;Pooling=False";
public static ISessionFactory CreateFactory()
{
return Fluently.Configure()
.Database(FluentNHibernate.Cfg.Db.MsSqlConfiguration
.MsSql2008
.ConnectionString(ConnectionStr))
.Mappings(x=>x.FluentMappings.AddFromAssemblyOf<User>())
.BuildSessionFactory();
}
}
}

数据访问层——简单地通过 Id 检索用户

namespace Users
{
public class Accesslayer
{
public static IList<User> GetUserById(int Id)
{
ISessionFactory provider = Framework.CreateFactory();
using (ISession session = provider.OpenSession())
{
return session.CreateSQLQuery(String
.Format("SELECT * FROM User WHERE Id={0}", Id)).List<User>();
}

}
}
}

最后是单元测试层

namespace Users
{
[TestFixture]
class AccessLayerTest
{
[Test]
public void CanGetUserById()
{
Assert.AreEqual(1, Accesslayer.GetUserById(1).Count());
}
}
}

数据库是 MSsql,有一个表“用户”,列与用户属性匹配。任何帮助将不胜感激谢谢

最佳答案

您应该能够在您的配置中执行此操作:

var factory = Fluently.Configure()
// ...
.ExposeConfiguration(c => SchemaMetadataUpdater.QuoteTableAndColumns(c))
.BuildSessionFactory();

它会自动为您转义您的表名和列名。

关于nhibernate - 没有自动映射 SQL 异常的 Fluent NHibernate,关键字 'User' 附近的语法不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10398314/

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