我想MachineRecord包含一個GroupRecord標識,如下所示:如何在Orchard中創建表關係?
MachineRecord
標識
名稱
數
GroupRecord
GroupRecord
標識
名稱
我曾嘗試:
我試圖使財產在模型中的
public virtual GroupRecord GroupRecord { get; set; }
和數據庫列名GroupRecord_Id
,但不知何故,這是行不通的,嘗試了一些其他方法就像給物業名稱GroupRecordId
和表列GroupRecord
等,但都沒有結果。
所以問題是,如何讓這個工作,以便MachineRecord表包含一個GroupRecord ID?
Machine.cs
namespace PowerAll.Voorraad.Models
{
public class MachineRecord
{
public virtual int Id { 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 string SerialNumber { get; set; }
public virtual GroupRecord GroupRecord { get; set; }
public virtual char PriceType { get; set; }
public virtual decimal Price { get; set; }
public virtual int Year { get; set; }
}
}
Group.cs
namespace PowerAll.Voorraad.Models
{
public class GroupRecord
{
public virtual int Id { get; set; }
public virtual string GroupName { get; set; }
}
}
Migrations.cs
namespace PowerAll.Voorraad
{
public class Migrations : DataMigrationImpl
{
public int Create()
{
SchemaBuilder.CreateTable("GroupRecord", table => table
.Column<int>("Id", column => column.PrimaryKey().Identity())
.Column<string>("GroupName", column => column.WithLength(100))
);
SchemaBuilder.CreateTable("MachineRecord", table => table
.Column<int>("Id", column => column.PrimaryKey().Identity())
.Column<int>("MachineNumber", column => column.NotNull())
.Column<string>("Title", column => column.NotNull().WithLength(40))
.Column<string>("Description1", column => column.WithLength(70))
.Column<string>("Description2", column => column.WithLength(70))
.Column<string>("Description3", column => column.WithLength(70))
.Column<string>("Description4", column => column.WithLength(70))
.Column<string>("Description5", column => column.WithLength(70))
.Column<string>("Description6", column => column.WithLength(70))
.Column<string>("SerialNumber", column => column.WithLength(20))
.Column<int>("GroupRecord_id", column => column.NotNull())
.Column<char>("PriceType", column => column.NotNull().WithLength(1))
.Column<decimal>("Price", column => column.NotNull())
.Column<int>("Year", column => column.WithLength(4))
);
// Return the version that this feature will be after this method completes
return 1;
}
}
}
個MachineController.cs
namespace PowerAll.Voorraad.Controllers
{
[Themed]
public class MachineController : Controller
{
private readonly IRepository<MachineRecord> machineRecords;
public MachineController(IRepository<MachineRecord> MachineRecords) {
machineRecords = MachineRecords;
}
public ActionResult List()
{
var items = machineRecords.Table;
return View(items);
}
}
}
編輯2:
我來到這麼遠感謝內啡肽,但是當我嘗試執行AddDummyData()
我得到這個錯誤:could not insert: [PowerAll.Voorraad.Models.MachineRecord][SQL: INSERT INTO PowerAll_Voorraad_MachineRecord (MachineNumber, Title, Description1, Description2, Description3, Description4, Description5, Description6, SerialNumber, PriceType, Price, Year) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?); select SCOPE_IDENTITY()]
而當我踏上槽代碼的所有值張貼正確。
這是我AddDummyData():
public void AddDummyData()
{
var GroupRecord = new GroupRecord { GroupName = "Oldtimers" };
groupRecords.Create(GroupRecord);
var MachineRecord = new MachineRecord
{
MachineNumber = 100001,
Title = "Landini L25",
Description1 = "Desc 1",
Description2 = "Desc 2",
Description3 = "Desc 3",
Description4 = "Desc 4",
Description5 = "Desc 5",
Description6 = "Desc 6",
SerialNumber = "100000",
GroupRecord = GroupRecord,
PriceType = 'I',
Price = 7999.99m,
Year = 1954
};
machineRecords.Create(MachineRecord);
}
編輯3:
現在,它的工作,這是我工作的代碼(對於那些誰是掙扎在這個太)
遷移.cs
public class Migrations : DataMigrationImpl
{
public int Create()
{
SchemaBuilder.CreateTable("MachineRecord", table => table
.Column<int>("Id", column => column.PrimaryKey().Identity())
.Column<int>("GroupRecord_Id")
.Column<int>("MachineNumber", column => column.NotNull())
.Column<string>("Title", column => column.NotNull().WithLength(40))
.Column<string>("Description", column => column.WithLength(70))
.Column<char>("PriceType", column => column.NotNull().WithLength(1))
.Column<decimal>("Price", column => column.NotNull())
.Column<int>("Year", column => column.WithLength(4))
);
SchemaBuilder.CreateTable("GroupRecord", table => table
.Column<int>("Id", column => column.PrimaryKey().Identity())
.Column<string>("Name")
);
return 1;
}
}
個MachineRecord.cs
public class MachineRecord
{
public virtual int Id { get; set; }
public virtual int MachineNumber { get; set; }
public virtual string Title { get; set; }
public virtual string Description { get; set; }
public virtual GroupRecord GroupRecord { get; set; }
public virtual char PriceType { get; set; }
public virtual decimal Price { get; set; }
public virtual int Year { get; set; }
}
GroupRecord。CS
public class GroupRecord
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
謝謝您的回答,但是這是我究竟是如何做到的,但我認爲問題是,我不繼承ContentPartRecord任何模型,因爲我不需要這個。我只是讓這些類與您的OptionsRecord類相同,我自己也添加了一個Id。這可能是問題嗎?有沒有辦法做到這一點,而不從ContentPartRecord繼承? – avb
只要您添加自己的ID並將其作爲主鍵,身份等,繼承ContentPartRecord就無關緊要。從Orchard實際得到的錯誤知道它不起作用的錯誤是什麼? – endorphin
我沒有從Orchard得到任何錯誤,並且如果我使用斷點en檢查結果視圖GroupRecord的值爲NULL。 (是的,我在db中添加了一個具有該Id的組:))。我將在一分鐘內發佈我的代碼。感謝您一直以來的幫助! – avb