在Orchard中,我有一个名为MachineRecord
的模型,它具有一些属性,并且都运行正常,但现在我添加了一个属性DateAdded
,并且当我向db中添加一些示例数据时,所有的值都被发布,豁免我后来添加的属性。Orchard:一个属性值不保存在SQL Server 2012中
MachineRecord.cs
public class MachineRecord
{
public virtual int Id { get; set; }
public virtual GroupRecord GroupRecord { get; set; }
public virtual int MachineNumber { get; set; }
public virtual string Title { get; set; }
public virtual string Description1 { get; set; }
public virtual string Description2 { get; set; }
public virtual string Description3 { get; set; }
public virtual string Description4 { get; set; }
public virtual string Description5 { get; set; }
public virtual string Description6 { get; set; }
public virtual int SerialNumber { get; set; }
public virtual string PriceType { get; set; }
public virtual decimal Price { get; set; }
public virtual int Year { get; set; }
public virtual DateTime DateAdded { get; set; }
}
这里是我添加一些的sampleData,我补充说,财产一切工作得很好了。
public void AddItems()
{
GroupRecord groupRecord = new GroupRecord()
{
Name = "Grondbewerking"
};
groupRepository.Create(groupRecord);
MachineRecord machineRecord = new MachineRecord()
{
GroupRecord = groupRecord,
Title = "Hassia zaaimachine",
MachineNumber = 100000,
Description1 = "25 Pijpen",
Description2 = "Traploos",
Description3 = "Mech. markeurs",
Description4 = "Max. 30 pijpen",
Description5 = "+ na egje",
Description6 = "Ongecontroleerd",
SerialNumber = 100001,
Price = 1600.00m,
PriceType = "Marge",
Year = 2005,
DateAdded = new DateTime(2012, 11, 9)
};
machineRepository.Create(machineRecord);
}
于是我走进代码,最后我来到一处不顺心的事,因为我们可以看到here的价值和属性实际上是在实体的方法,所以这是好的,但是当我看看在其他参数上,如propertyNames
,您可以看到here它具有所有属性名称,exept DateAdded
!因此,我进一步查看了最后生成的SQL查询,该属性不在那里,因此数据库单元格已填充为NULL
。
我确定db列的数据类型是datetime
,我删除了mappings.bin,所以NHibernate会再次缓存所有的属性,但没有结果。
编辑:
忘了发布我的migrations.cs。
Migrations.cs
public class Migrations : DataMigrationImpl
{
public int Create()
{
SchemaBuilder.CreateTable("MachineRecord", table => table
.Column<int>("Id", c => c.PrimaryKey().Identity())
.Column<int>("GroupRecord_Id")
.Column<int>("MachineNumber", c => c.NotNull())
.Column<string>("Title", c => c.NotNull().WithLength(40))
.Column<string>("Description1", c => c.WithLength(70))
.Column<string>("Description2", c => c.WithLength(70))
.Column<string>("Description3", c => c.WithLength(70))
.Column<string>("Description4", c => c.WithLength(70))
.Column<string>("Description5", c => c.WithLength(70))
.Column<string>("Description6", c => c.WithLength(70))
.Column<string>("SerialNumber", c => c.WithLength(6))
.Column<string>("PriceType", c => c.NotNull())
.Column<decimal>("Price", c => c.NotNull())
.Column<int>("Year", c => c.WithLength(4))
.Column<DateTime>("DateAdded", c => c.WithType(DbType.DateTime))
);
SchemaBuilder.CreateTable("GroupRecord", table => table
.Column<int>("Id", c => c.PrimaryKey().Identity())
.Column<string>("Name")
);
return 1;
}
}
有谁知道如何解决这一问题?提前致谢!
映射缓存在app_data文件夹中的mappings.bin中。因此,如果应用程序池尚未回收,则需要删除该文件以触发映射更改。无论如何,这对我来说都是有效的。 –