为什么 Fluent NHibernate AutoMappings 会在 Id 上添加下划线(例如 Entity_id)?
您好,使用流畅的 nibernate 自动映射
将其映射
public virtual int Id { get; set; }
/*...snip..*/
public virtual MapMarkerIcon MapMarkerIcon { get; set; }
}
到此
CREATE TABLE [Attraction](
[Id] [int] IDENTITY(1,1) NOT NULL,
[MapMarkerIconId] [int] NULL
)
:
var cfg = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005.ConnectionString(connectionString)
.DefaultSchema("xxx"))
.Mappings(m =>
{
m.AutoMappings
.Add(
AutoMap.AssemblyOf<Partner>().Where(
n => n.Namespace == "xxx.Core.Domain")
);
m.FluentMappings.Conventions.Add(PrimaryKey.Name.Is(x => "Id"),
DefaultLazy.Always(),
ForeignKey.EndsWith("Id")
);
}
)
.ExposeConfiguration(c => c.SetProperty(Environment.ReleaseConnections, "on_close"))
.ExposeConfiguration(c => c.SetProperty(Environment.ProxyFactoryFactoryClass, typeof(ProxyFactoryFactory).AssemblyQualifiedName))
.BuildConfiguration();
为什么我得到
“/XXX.Web”中的服务器错误 应用。列名无效 'MapMarkerIcon_id'。
如何让 fluidnibernate 使用 MapMarkerIconId 而不是 MapMarkerIcon_id?
Hi using fluent nibernate automappings
to map this
public virtual int Id { get; set; }
/*...snip..*/
public virtual MapMarkerIcon MapMarkerIcon { get; set; }
}
to this
CREATE TABLE [Attraction](
[Id] [int] IDENTITY(1,1) NOT NULL,
[MapMarkerIconId] [int] NULL
)
with this:
var cfg = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005.ConnectionString(connectionString)
.DefaultSchema("xxx"))
.Mappings(m =>
{
m.AutoMappings
.Add(
AutoMap.AssemblyOf<Partner>().Where(
n => n.Namespace == "xxx.Core.Domain")
);
m.FluentMappings.Conventions.Add(PrimaryKey.Name.Is(x => "Id"),
DefaultLazy.Always(),
ForeignKey.EndsWith("Id")
);
}
)
.ExposeConfiguration(c => c.SetProperty(Environment.ReleaseConnections, "on_close"))
.ExposeConfiguration(c => c.SetProperty(Environment.ProxyFactoryFactoryClass, typeof(ProxyFactoryFactory).AssemblyQualifiedName))
.BuildConfiguration();
Why do I get
Server Error in '/XXX.Web'
Application. Invalid column name
'MapMarkerIcon_id'.
How can I make fluentnibernate use MapMarkerIconId instead of MapMarkerIcon_id?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你需要一个 Id 约定。
请参阅http://wiki. Fluentnhibernate.org/Available_conventions
和 http://wiki. Fluentnhibernate.org/Convention_shortcut
You need an Id convention.
See http://wiki.fluentnhibernate.org/Available_conventions
and http://wiki.fluentnhibernate.org/Convention_shortcut
以上链接均无效。这是解决方案,其中包含当前 Fluent NHibernate 和 Fluent NHibernate 的链接。自动映射文档。
问题(一个简单的例子):
假设你有一个简单的例子(来自 Fluent 的 wiki),它有一个实体,它是列表中的值对象:
带有带有 例如 的表
和 Shelfid 的外键 -> ; Shelf.Id
你会得到错误:
列名无效...shelf_id
解决方案:
添加一个约定,它可以是系统范围的,也可以是更受限制的。
代码示例:
现在,它将自动将
ShelfId
列映射到Product
中的Shelf
属性。更多信息
自动映射 Wiki
查看有关 Fluent NHibernate 自动映射约定的更多信息
None of the above links work. Here's the solution with links to current Fluent NHibernate & automapping documentation.
The issue (a simple example):
Say you have the simple example (from fluent's wiki) with an Entity and it's Value Objects in a List:
With tables which have e.g.
And a foreign key for shelfid -> Shelf.Id
You would get the error:
invalid column name ... shelf_id
Solution:
Add a convention, it can be system wide, or more restricted.
Code example:
Now it will automap the
ShelfId
column to theShelf
property inProduct
.More info
Wiki for Automapping
See more about Fluent NHibernate automapping conventions