我来自ORM工具的实体框架和LLBL背景.
我被要求建立一个基于NHibernate的新系统.我从来没有这样做过,所以我带着新鲜的眼睛来看它.
使用Fluent NHibernate进行映射和NHibernate中的"按代码映射"有什么区别?有偏好吗?
nhibernate nhibernate-mapping fluent-nhibernate fluent-nhibernate-mapping
有没有办法在不创建hbm.xml文件映射的情况下在Fluent Nhibernate中查询存储过程?
我正在使用Fluent Nhibernate和Nhibernate来完成我当前的项目.我需要将时间记录到毫秒.我有这个用于我的映射
Map(x => x.SystemDateTime)
.CustomType("Timestamp")
.Not.Nullable();
Run Code Online (Sandbox Code Playgroud)
我创建了hbm.xml文件,该行如下:
<property name="SystemDateTime" type="Timestamp">
<column name="SystemDateTime" not-null="true" />
</property>
Run Code Online (Sandbox Code Playgroud)
我已经读过这是修复,但数据库中的记录没有毫秒.有谁解决了这个问题.我也尝试过CustomSqlType.
谢谢
我有两个类Order和Items
我想要一个像这样的方法
class Order
{
public virtual IList<Item> GetItems(Order order)
{
//get items for that order.
}
}
class Item
{
public virtual IList<Order> GetOrders(Item item)
{
//get all the orders in which that items is present.
}
}
Run Code Online (Sandbox Code Playgroud)
是编写创建这样的方法还是我应该创建一个属性
public virtual IList<Item> Items { get; set; }
Run Code Online (Sandbox Code Playgroud)
我应该怎么做这个映射是nhibernate?
在我工作的公司中,我们使用Fluent NHibernate作为数据对象模型.几天前,我们遇到了一个问题,Fluent NHibernate生成了一个额外的列,它既不存在于模型中,也不存在于映射中.情况如下:
我的模型:FirstClass.cs
public class FirstClass
{
public virtual int Id { get; private set; }
public virtual SecondClass MyReference { get; set; }
public virtual DateTime DecisionDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的映射:
public class FirstClassMap : ClassMap<FirstClass>
{
public FirstClassMap()
{
Id(x => x.Id);
Map(x => x.DecisionDate);
References(x => x.MyReference);
}
}
Run Code Online (Sandbox Code Playgroud)
使用以下代码构建架构后,
Instance._sessionFactory = Fluently.Configure()
.Database(MySQLConfiguration.Standard
.ConnectionString(connectionString)
.ShowSql())
.ExposeConfiguration(c =>
{
c.Properties.Add("current_session_context_class", ConfigurationHelper.getSetting("SessionContext"));
})
.ExposeConfiguration(BuildSchema)
.Mappings( m => m.FluentMappings.AddFromAssemblyOf<Community>())
.BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)
使用具有Id列的SecondClass表的索引和外键生成名为"SecondClass_id"的额外列.这是生产的表格:
CREATE TABLE `FirstClass` (
`Id` …Run Code Online (Sandbox Code Playgroud) nhibernate nhibernate-mapping fluent-nhibernate fluent-nhibernate-mapping
我正在设置一个新的解决方案来映射已从Access数据库导入的SQL数据.Auto Mappings对我定义的实体工作正常,但我需要能够使用Fluent映射类型来访问.NotFound.Ignore扩展.
我在另一个项目中使用了完全相同的语法(我认为!),它工作得很好.我是否犯了一个小学生错误导致"不支持的映射类型'IT.Classes.Entities.Admin'"?任何帮助深表感谢.
DDL:
CREATE TABLE [dbo].[Admin](
[ID] [int] NOT NULL,
[primaryEmail] [nvarchar](50) NULL,
[secondaryEmail] [nvarchar](50) NULL,
[highPriorityEmail] [nvarchar](50) NULL,
[MobileEmail] [nvarchar](50) NULL,
[EmailUser] [bit] NOT NULL,
[HelpDeskMessage] [nvarchar](max) NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
实体:
namespace IT.Classes.Entities
{
public class Admin
{
public virtual bool EmailUser { get; set; }
public virtual string HelpdeskMessage { get; set; }
public virtual string HighPriorityEmail { get; set; }
public virtual int Id { get; set; }
public virtual string MobileEmail { get; set; …Run Code Online (Sandbox Code Playgroud) 我在asp.net mvc3中使用Fluent Nhibernate与c#
我正在按照以下方式生成并映射一个类
制图
using FluentNHibernate.Mapping;
using Com.Web.Domain;
namespace Com.Web.Mapping
{
public class CompanyMap : ClassMap<Company>
{
public CompanyMap()
{
Id(x => x.id);
Map(x => x.Name);
}
}
}
Run Code Online (Sandbox Code Playgroud)
类
using System.Collections.Generic;
using System;
namespace Com.Web.Domain
{
public class Company
{
public virtual int id { get; set; }
public virtual string Name{get;set}
}
}
Run Code Online (Sandbox Code Playgroud)
并在配置文件中
private static void InitializeSessionFactory()
{
_sessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
.ConnectionString(local)
)
.Mappings(m =>
m.FluentMappings
.AddFromAssemblyOf<Company>())
.ExposeConfiguration(cfg => new SchemaExport(cfg)
.Create(false, false)) // this …Run Code Online (Sandbox Code Playgroud) nhibernate asp.net-mvc nhibernate-mapping fluent-nhibernate fluent-nhibernate-mapping
我正在使用流利的NHibernate.
我有一个app.config文件,其中包含很少的特定键(applicationSettings和userSettings).
似乎nhibernate不喜欢这些键.只要这些密钥存在于文件中,Fluently.Configure()就会失败,并抛出一条带有消息Unrecognized configuration section applicationSettings的异常.
我能做什么?
这是配置文件:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="MyDB" connectionString="Data Source=|DataDirectory|\MyDB.sdf" providerName="Microsoft.SqlServerCe.Client.3.5" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<applicationSettings>
<MyApp.Properties.Settings>
<setting name="ServerIp" serializeAs="String">
<value>127.0.0.1</value>
</setting>
<setting name="ServerPort" serializeAs="String">
<value>5678</value>
</setting>
<setting name="UseSSL" serializeAs="String">
<value>True</value>
</setting>
<setting name="WsUrl" serializeAs="String">
<value/>
</setting>
</MyApp.Properties.Settings>
</applicationSettings>
<userSettings>
<MyApp.Properties.Settings>
<setting name="User" serializeAs="String">
<value>test</value>
</setting>
<setting name="Password" serializeAs="String">
<value>test</value>
</setting>
</MyApp.Properties.Settings>
</userSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
谢谢!
.net c# nhibernate fluent-nhibernate fluent-nhibernate-mapping
我正在编写一个 POS(销售点)软件,它允许支付货物或退款。在付款或退款时,需要指定使用哪种汇款方式:现金、EFT(~=信用卡)、会员卡、代金券等。
这些汇款方式是一组有限且已知的值(一种枚举)。
棘手的部分是我需要能够在 POS 终端上存储这些方式的自定义子集,用于付款和退款(两组可能不同)。
例如:
我选择实现汇款方式的概念如下:
public abstract class MoneyTransferMean : AggregateRoot
{
public static readonly MoneyTransferMean Cash = new CashMoneyTransferMean();
public static readonly MoneyTransferMean EFT = new EFTMoneyTransferMean();
// and so on...
//abstract method
public class CashMoneyTransferMean : MoneyTransferMean
{
//impl of abstract method
}
public class EFTMoneyTransferMean : MoneyTransferMean
{
//impl of abstract method
}
//and so on...
}
Run Code Online (Sandbox Code Playgroud)
它不是“普通枚举”的原因是这些类内部存在一些行为。我还必须将内部类声明为 public(而不是私有),以便在 FluentNHibernate 映射中引用它们(见下文)。
支付和退款手段总是作为一个集合存储在/从数据库中检索。它们实际上是两个不同的集合,即使两个集合中的某些值可能相同。
用例 1:定义一组新的支付/退款方式
用例2:检索所有支付/退款方式 …
c# nhibernate domain-driven-design fluent-nhibernate fluent-nhibernate-mapping
我有以下两个班级:
广告
public virtual int Id { get; set;
public virtual IList<AdvertImage> AdvertImages { get; set; }
Run Code Online (Sandbox Code Playgroud)
AdvertImage
public virtual int Id { get; set; }
public virtual string Filename { get; set;
public virtual Advert Advert { get; set; }
Run Code Online (Sandbox Code Playgroud)
在数据库中,我的AdvertImages表具有FK'AdvertId',它与具有'Id'PK的广告表相关.
这是一对多映射,因为一个广告可以有许多图像.
我的Fluent NHibernate映射(为简洁起见编辑)是:
AdvertMap
Id(x => x.Id)
.GeneratedBy.Identity();
...
HasMany(x => x.AdvertImages)
.KeyColumn("AdvertId")
.Inverse();
...
Table("Adverts");
Run Code Online (Sandbox Code Playgroud)
AdvertImageMap
Id(x => x.Id)
.GeneratedBy.Identity();
...
References(x => x.Advert)
.Column("AdvertId");
...
Table("AdvertImages");
Run Code Online (Sandbox Code Playgroud)
我正在创建一个新的Advert代码实例,然后AdvertImages使用a 填充属性(广告)List<AdvertImage>.
当我将我的Advert …
nhibernate nhibernate-mapping fluent-nhibernate fluent-nhibernate-mapping