C# FluentNHibernate表列顺序
我似乎无法使用流利的NHibernate使表的列顺序正确 Employee.csC# FluentNHibernate表列顺序,c#,nhibernate,fluent-nhibernate,fluent-nhibernate-mapping,C#,Nhibernate,Fluent Nhibernate,Fluent Nhibernate Mapping,我似乎无法使用流利的NHibernate使表的列顺序正确 Employee.cs public class Employee : Entity { #region Fields private EmployeeStatus _status; private DateTime _created; private DateTime? _updated; #endregion #region Constructor public Empl
public class Employee : Entity
{
#region Fields
private EmployeeStatus _status;
private DateTime _created;
private DateTime? _updated;
#endregion
#region Constructor
public Employee()
{
_status = EmployeeStatus.Active;
_created = DateTime.Now;
}
#endregion
#region Properties
public virtual string FirstName { get; set; }
public virtual string MiddleName { get; set; }
public virtual string LastName { get; set; }
public virtual string FullName
{
get
{
return string.Format("{0} {1} {2}", FirstName, MiddleName, LastName);
}
}
public virtual Gender Gender { get; set; }
public virtual DateTime BirthDate { get; set; }
public virtual Address HomeAddress { get; set; }
public virtual EmployeeStatus IsActive
{
protected set { _status = value; }
get { return _status; }
}
public virtual DateTime Created
{
protected set { _created = value; }
get { return _created; }
}
public virtual DateTime? Updated
{
protected set { _updated = value; }
get { return _updated; }
}
#endregion
#region Overrides
public override string ToString()
{
return FullName;
}
#endregion
}
HomeAddress.cs
public class Address : ValueObject<Address>
{
#region Properties
public virtual string City { get; private set; }
public virtual string Zipcode { get; private set; }
public virtual string AddressLine { get; private set; }
#endregion
#region Constructor
public Address(string city, string zipcode, string addressLine)
{
City = city;
Zipcode = zipcode;
AddressLine = addressLine;
}
/// <summary>
/// Required by NHibernate
/// </summary>
protected Address() { }
#endregion
}
但是NHibernate却输出了这个:
create table `Employee` (
Id VARCHAR(40) not null,
FirstName VARCHAR(255),
MiddleName VARCHAR(255),
LastName VARCHAR(255),
BirthDate DATETIME,
IsActive INTEGER,
Created DATETIME,
Updated DATETIME,
City VARCHAR(255),
Zipcode VARCHAR(255),
AddressLine VARCHAR(255),
primary key (Id)
)
是否可以仅从NHibernate/FluentNHibernate对表的列进行排序?或者我应该先在数据库中手动创建这些列结构吗
谢谢 在我看来,数据库列顺序对数据库服务器来说是没有意义的,您总是可以按需要的任何顺序选择列。NHibernate或Fluent NHibernate显然是在编写组件属性之前的简单属性脚本。就我个人而言,我不会担心这一点,但如果这对您很重要,那么您必须自己创建表,或者让NHibernate生成创建脚本,然后您可以对其进行编辑。我通过以下方式在我的项目中对NHibernate中的列进行排序:
大约花了一个小时。比如说,当sysadmin直接签出数据库时,它确实提供了可读性。但更重要的是,如果我们使用存储过程,这一点很重要。这是怎么回事?我能想到的唯一一个SP用例是在不指定列顺序的情况下进行插入,我强烈建议不要这样做。列顺序从根本上说很重要,特别是对于旧式集成。如何做到这一点?列应始终按名称而不是位置寻址。我从未在考虑数据库列顺序的系统上工作过。我读过MySQL中的性能调优,但这是特定于提供商的。
Id
FirstName
MiddleName
LastName
BirthDate
City
Zipcode
AddressLine
IsActive
Created
Updated
create table `Employee` (
Id VARCHAR(40) not null,
FirstName VARCHAR(255),
MiddleName VARCHAR(255),
LastName VARCHAR(255),
BirthDate DATETIME,
IsActive INTEGER,
Created DATETIME,
Updated DATETIME,
City VARCHAR(255),
Zipcode VARCHAR(255),
AddressLine VARCHAR(255),
primary key (Id)
)