我想知道是否有一种方法可以在不创建视图的情况下将具有两个非主键列的两个表联接在一起?我有一个名为“ Make”的表,其中包含“ Name”和“ Year”列,我想与另一个名为“ Style”的表,其中包含“ MakeName”和“ MakeYear”列。一个“制作”可以有多个“样式”。这是我到目前为止创建的实体:
public class Make
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Year { get; set; }
public virtual IList<Style> Styles { get; set; }
}
public class Style
{
public virtual int Id { get; set; }
public virtual string MakeName { get; set; }
public virtual string MakeYear { get; set; }
public virtual string Class { get; set; } …Run Code Online (Sandbox Code Playgroud) c# sql nhibernate fluent-nhibernate fluent-nhibernate-mapping
我有2个这样的表:
TABLE ARTICLE
Id int NOT_NULL PK
Title nvarchar(50) NOT_NULL
TABLE CONTENT
Id int NOT_NULL PK
content nvarchar(MAX) NOT_NULL
remarks nvarchar(200)
Run Code Online (Sandbox Code Playgroud)
所以每篇文章都有一个pk id与文章pk id相同的内容,然后我创建了这样的域类:
public class Article {
public virtual int Id {get; set;}
public virtual string Title {get; set;}
public virtual Content Content {get; set;}
}
public class Content {
public virtual int Id {get; set;}
public virtual string content {get; set;}
public virtual string remarks {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我尝试像这样映射这些类:
public class ArticleMap : ClassMap<Article>
{
public ArticleMap()
{ …Run Code Online (Sandbox Code Playgroud) 我的公司有多个站点,它们引用相同的DB和Core代码库.然后我们有一个管理数据的CMS.
在Core库中,我有一个Site类,它包含有关每个站点的一堆基本信息.这是我对它的流畅映射.
using Core.Model; // Where Site class exists
namespace Core.Repository.NHibernate.Mappings
{
public class SiteMapping : ClassMap<Site>
{
public SiteMapping()
{
Table("f_site");
Id(x => x.Id, "f_site_id").GeneratedBy.Identity();
Map(x => x.Domain, "domain_name").Not.Nullable();
}
}
}
Run Code Online (Sandbox Code Playgroud)
作为CMS的一部分,我们会记录谁编辑了什么以及何时编辑.但我想只在CMS中引用Log类和映射,而不是在我的核心代码中,因为人们只能通过CMS编辑信息.
这是我当前流向Log类的流程映射,它引用了Site类.
using Core.Model; // where Site class exists
using Cms.Model; // where Log and CmsUser classes exists
namespace Cms.Repository.NHibernate.Mappings
{
public class LogMapping : ClassMap<Log>
{
public LogMapping()
{
Table("f_log");
Id(x => x.Id, "f_log_id").GeneratedBy.Identity();
Map(x => x.Message, "message");
Map(x => x.LogType, "d_log_type_id").CustomType<LogType>();
Map(x => x.LogOperation, "d_log_operation_id").CustomType<LogOperation>(); …Run Code Online (Sandbox Code Playgroud) nhibernate nhibernate-mapping fluent-nhibernate fluent-nhibernate-mapping
我使用Fluent NHibernate,我需要使用GeneratedBy.Native()生成Id,以支持Oracle,DB2和MSSQL数据库.如果我尝试在Oracle上运行它并在表中插入新记录,我会得到:
Could not execute query: select hibernate_sequence.nextval from dual
System.Data.OracleClient.OracleException (0x80131938): ORA-02289: sequence does not exist
Run Code Online (Sandbox Code Playgroud)
映射类:
public sealed class ListDataMap : ClassMap<ListData>
{
public ListDataMap()
{
Table("LIST_DEF");
Id(x => x.Id, "ID").Not.Nullable().GeneratedBy.Native();
//other mapping
}
}
Run Code Online (Sandbox Code Playgroud)
如何指定序列的名称?我不想使用hibernate_sequence因为我需要多于1个序列而且我不想拥有1个共享序列.
谢谢!
c# nhibernate-mapping fluent-nhibernate fluent-nhibernate-mapping