这段代码有什么问题吗?我没有得到任何生成,也没有抛出异常.
public static void ExportSchema()
{
Configuration cfg = LoadDefaultConfiguration();
Fluently.Configure(cfg)
.Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.Load("dnnSphere.Meta")))
.ExposeConfiguration(c => new SchemaExport(c).SetOutputFile("myDDL.sql").Execute(true,true,false));
}
Run Code Online (Sandbox Code Playgroud) 我有以下课程
public class Contact
{
public Contact() {
Addresses = new List<Address>();
EmailAddresses = new List<EmailAddress>();
PhoneNumbers = new List<PhoneNumber>();
}
public virtual int ContactID { get; private set; }
public virtual Firm Firm { get; set; }
public virtual ContactType ContactType { get; set; }
public virtual string FullName { get; set; }
public virtual string FiscalCode { get; set; }
public virtual string Notes { get; set; }
public virtual ContactRole ContactRole { get; set; }
public virtual …Run Code Online (Sandbox Code Playgroud) 我正处于使用Fluent NHibernate构建数据库的早期阶段.我在ASP.NET MVC 3中实现了一个工作单元模式,让NHibernate为我更新我的数据库模式.为了插入/更新我的初始数据,我有一个Database控制器,其中一个Update操作尝试将SaveOrUpdate(...)一个User实体(管理员用户)放入Users表中.
通过Visual Studio手动删除所有用户记录并重新运行我的Update操作以重新填充Users表后,我收到以下NHibernate.StaleObjectStateException异常:
Row was updated or deleted by another transaction (or unsaved-value mapping was
incorrect): [Invoicer.Data.Entities.User#3105248d-ca91-4c64-bf8f-9ebb017943b7]
Line 26: {
Line 27: if (_transaction.IsActive)
Line 28: _transaction.Commit();
Line 29: }
Run Code Online (Sandbox Code Playgroud)
注意:保存或更新的用户ID是Guid,其值大于(3105 ...).
我究竟做错了什么?
我很难让Fluent NHibernate在SQL Server的地理空间类型中发挥出色.我想在我的Place类中存储一个地理点,但是当我运行ASP.NET MVC应用程序时,我不断收到NHibernate配置错误:
Method 'SetParameterValues' in type 'NHibernate.Spatial.Type.GeometryType' from
assembly 'NHibernate.Spatial, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null' does not have an implementation.
Run Code Online (Sandbox Code Playgroud)
更新:这是由过时的NHibernate.Spatial DLL引起的.引用最新版本(2.2+)可以解决问题.感谢psousa带领我找到解决方案.
Place 类:using System;
using GisSharpBlog.NetTopologySuite.Geometries;
using NHibernate.Validator.Constraints;
namespace MyApp.Data.Entities
{
public class Place
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual Point Location { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
Place映射:using MyApp.Data.Entities;
using FluentNHibernate.Mapping;
using NHibernate.Spatial.Type;
namespace MyApp.Data.Mappings
{
public class …Run Code Online (Sandbox Code Playgroud) 好吧,我的情景
public class Permission
{
public virtual Function Function { get; set; }
public virtual Profile Profile { get; set; }
}
public class MapPermission : ClassMap<Permission>
{
public MapPermission()
{
Table("Permissions".ToUpper());
CompositeId().KeyProperty(x => x.Function, "FunctionID").KeyProperty(x => x.Profile, "ProfileID");
}
}
Run Code Online (Sandbox Code Playgroud)
其中Function AND Profile是两个简单映射的实体.当我运行我有这个错误:
无法确定类型:Data.Model.Entities.Function,Data.Model,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null,对于列:NHibernate.Mapping.Column(FunctionID)"}
有办法避免这种情况吗?最终我需要创建一个由两个自定义映射类构成的CompositeID类.如果我将compositeID与int字段一起使用,它就像魅力一样
提前致谢
功能(如配置文件)映射
public class Function
{
public virtual int ID { get; set; }
public virtual string Name { get; set; }
}
public class MapFunction : ClassMap<Function> …Run Code Online (Sandbox Code Playgroud) 因此,我正在尝试使用nhibernate调用保存图像的存储过程。我的问题是查询失败,并显示以下错误:
byte []值的长度超过在映射/参数中配置的长度。
这是我将参数附加到的地方ISQLQuery。参数为Dictionary<string, object>。
public void Execute()
{
string sql = BuildSprocDefinition();
var query = Session.CreateSQLQuery(sql);
foreach (var parameter in Parameters)
{
if (parameter.Value is int)
query.SetParameter<int>(parameter.Key, (int)parameter.Value);
else if (parameter.Value is long)
query.SetParameter<long>(parameter.Key, (long)parameter.Value);
else if (parameter.Value is bool)
query.SetParameter<bool>(parameter.Key, (bool)parameter.Value);
else if (parameter.Value is byte[])
query.SetBinary(parameter.Key, (byte[])parameter.Value);
else
query.SetParameter(parameter.Key, parameter.Value);
}
using (var tx = Session.BeginTransaction())
{
query.ExecuteUpdate();
Session.Flush();
tx.Commit();
}
}
protected string BuildSprocDefinition()
{
StringBuilder sql = new StringBuilder(String.Format("exec {0} ", …Run Code Online (Sandbox Code Playgroud) 我的域名有一个名为Car的对象.它有几个属性
public abstract class Car : ICar
{
public int Id { get; set; }
public string Name { get; set; }
public string Model { get; set; }
public string Color { get; set; }
public abstract string Drive();
}
Run Code Online (Sandbox Code Playgroud)
它实现了接口ICar
public interface ICar
{
string Color { get; set; }
int Id { get; set; }
string Model { get; set; }
string Name { get; set; }
string Drive();
}
Run Code Online (Sandbox Code Playgroud)
现在我希望有两种继承类型.他们继承了Car,并实施了ICar.
class SportCar: Car, ICar
{
public …Run Code Online (Sandbox Code Playgroud) 我没有得到我的映射代码,总是出现相同的错误:当我启动应用程序创建表时,它显示以下错误
尝试在添加时添加多对一的"文档".
这是我的代码:
public class DocTypes
{
public virtual Int16 Id { get; private set; }
public virtual IList<Documents> Documents { get; set; }
}
public class Documents
{
public virtual Int64 Id { get; private set; }
public virtual DocTypes DocType { get; set; }
public virtual IList<Files> Files { get; set; }
public virtual IList<Fields> Fields { get; set; }
}
public class Fields
{
public virtual Int32 Id { get; private set; }
public virtual Documents Document …Run Code Online (Sandbox Code Playgroud) 我正在使用QueryOver并islike从oracle db获取记录,但我想要不区分大小写
orgs = session.QueryOver<V_CM_ORG_GET>()
.SelectList(list => list
.SelectGroup(c => c.ORG_ID).WithAlias(()=>or.ORG_ID)
.SelectGroup(c => c.ORG_NAME).WithAlias(() => or.ORG_NAME)
.SelectGroup(c => c.PHONE).WithAlias(() => or.PHONE))
.Where(Restrictions.On<V_CM_ORG_GET>(y=>y.ORG_NAME)
.IsLike(query,MatchMode.Anywhere))
.TransformUsing(Transformers.AliasToBean<OrgsObj>())
.List<OrgsObj>();
Run Code Online (Sandbox Code Playgroud) 我正在寻找任何方式创建database并tables与NHibernate和FluentNHibernate。
我该怎么办?
试。
private static ISessionFactory createConnection()
{
if (session != null)
return session;
//database configs
FluentConfiguration _config = Fluently.Configure().Database(
MySQLConfiguration.Standard.ConnectionString(
x => x.Server(HOST).
Username(USER).
Password(PASSWORD).
Database(DB)
))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<PerfilMap>())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<ModuloMap>())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<PermissaoMap>())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<UsuarioMap>())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<CategoriaMap>())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<SubcategoriaMap> ())
.ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true));
session = _config.BuildSessionFactory();
return session;
}
Run Code Online (Sandbox Code Playgroud) nhibernate ×6
c# ×3
asp.net-mvc ×2
bytearray ×1
composite-id ×1
custom-type ×1
inheritance ×1
interface ×1
isqlquery ×1
oop ×1
schemaexport ×1
spatial ×1
sql-server ×1