具有两种不同数据库引擎(Oracle 和 SQL Server)的 Fluent Id 字段
我正在使用 Fluent NHibernate 来映射我的实体。
在我的应用程序中,我必须使用 2 个不同的引擎(Oracle 和 SQL Server)。我使用命令行参数中的参数设置引擎并将其发送到我的 SessionFactory 类:
public static ISessionFactory CreateSessionFactory(string databaseEngine, string connectionString, Type entityType)
{
switch (databaseEngine.ToLower())
{
case "mssql":
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(connectionString))
.Mappings(m => m.FluentMappings.AddFromAssembly(entityType.Assembly))
.BuildSessionFactory();
case "oracle":
return Fluently.Configure()
.Database(OracleClientConfiguration.Oracle9.ConnectionString(connectionString))
.Mappings(m => m.FluentMappings.AddFromAssembly(entityType.Assembly))
.BuildSessionFactory();
}
return null;
}
这是我的 MapClass 之一:
public class SimulacaoMap : ClassMap<Simulacao>
{
public SimulacaoMap()
{
Table("SIMULACAO").GeneratedBy.Sequence("SEQUENCE_NAME");
Id(x => x.Id).Column("ID_SIMULACAO");
Map(x => x.DataReferencia).Column("DAT_REFERENCIA");
}
}
这适用于 Oracle,但是,当我使用 SQL Server 时,我收到此异常:
无法实例化 ID 生成器: 序列。
如何使用同时适用于 SQL Server 和 Oracle 的 Id Map?
谢谢
I'm using Fluent NHibernate to map my entities.
In my application I have to work with 2 different engines (Oracle and SQL Server). I set the engine with the parameter in the command line argument and send it to my SessionFactory class:
public static ISessionFactory CreateSessionFactory(string databaseEngine, string connectionString, Type entityType)
{
switch (databaseEngine.ToLower())
{
case "mssql":
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(connectionString))
.Mappings(m => m.FluentMappings.AddFromAssembly(entityType.Assembly))
.BuildSessionFactory();
case "oracle":
return Fluently.Configure()
.Database(OracleClientConfiguration.Oracle9.ConnectionString(connectionString))
.Mappings(m => m.FluentMappings.AddFromAssembly(entityType.Assembly))
.BuildSessionFactory();
}
return null;
}
This is one of my MapClass:
public class SimulacaoMap : ClassMap<Simulacao>
{
public SimulacaoMap()
{
Table("SIMULACAO").GeneratedBy.Sequence("SEQUENCE_NAME");
Id(x => x.Id).Column("ID_SIMULACAO");
Map(x => x.DataReferencia).Column("DAT_REFERENCIA");
}
}
This works for Oracle, but, when I use SQL Server I get this exception:
could not instantiate id generator:
sequence.
How can I use a Id Map that works for SQL Server and Oracle at the same time?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
SQL Server vNext 支持“SEQUENCE ”,或更改“GenerateBy”部分。
SQL Server vNext supports "SEQUENCE", or change that "GeneratedBy" part.