Fluent NHibernate使用我的用户名作为前缀创建表



我是nhibernet的新手,并试图创建一个测试程序。因此,我为Fluent NHibernate创建了实体和映射文件,如下所述:https://github.com/FluentNHibernate/fluent-nhibernate/wiki/Getting-started

实体:

namespace NHibernateDemoApp
{
public class Employee
{
public virtual int Id { get; protected set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
}
}

地图:

class EmployeeMap : ClassMap<Employee>
{
public EmployeeMap()
{
Id(x => x.Id);
Map(x => x.FirstName);
Map(x => x.LastName);
}
}   

然后我像这样使用它们:

private static ISessionFactory CreateFluidSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2012.ConnectionString("Data Source=mydatabase;Initial Catalog=mydatabase;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False")
)
.Mappings(m =>
m.FluentMappings.AddFromAssemblyOf<Program>())
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
}
private static void BuildSchema(Configuration config)
{
new SchemaExport(config)
.Create(false, true);
}

一切看起来都很好,但NHibernet已经用我的用户名作为前缀创建了表格。因此,表创建如下所示:

CREATE TABLE [MyDomainMyUsername].[Employee](
[Id] [int] IDENTITY(1,1) NOT NULL,
[FirstName] [nvarchar](255) NULL,
[LastName] [nvarchar](255) NULL,
PRIMARY KEY CLUSTERED 
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

但它应该像这样创建:

CREATE TABLE [MyDatabase].[Employee](
[Id] [int] IDENTITY(1,1) NOT NULL,
[FirstName] [nvarchar](255) NULL,
[LastName] [nvarchar](255) NULL,
PRIMARY KEY CLUSTERED 
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

当我以其他用户身份启动我的测试程序时,该表被创建两次(每个用户一个(。

我做错了什么?如何告诉 hibernet 表创建中不应该有用户名。

您需要更改默认架构。这是一个 NH 配置设置。确保您具有在 dbo 架构中创建表的数据库权限。

您应该能够执行以下操作:

return 
Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2012
.ConnectionString("Data Source=mydatabase;Initial Catalog=mydatabase;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFai9lover=False")
.DefaultSchema("dbo"))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Program>())
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();

该选项挂起配置类型:https://github.com/FluentNHibernate/fluent-nhibernate/wiki/Database-configuration

最新更新