我为POCO使用以下代码:如您所见,为我的引用(即我的引用)分配了别名。
public class MasterItemAlias
{
[PrimaryKey]
public long ID { get; set; }
[Reference]
public MasterItem MasterItem { get; set; }
[Alias("MasterItem_id")]
public int MasterItemId { get; set; }
}
我使用LoadSelect进行查询,但仅填充MasterItemID(int),而不填充参考对象MasterItem。
var res = Db.LoadSelect<Resources.Entities.MasterItemAlias>();
issue with your example是因为外键ID和主键类型不匹配,如果将MasterItemId
更改为long
,则可以使用,例如:
public class MasterItem
{
[AutoIncrement]
public long Id { get; set; }
public string Code { get; set; }
}
db.CreateTable<MasterItem>();
public class MasterItemAlias
{
[AutoIncrement] //missing as Id was not specified on Save below
public long Id { get; set; }
public string AliasCode { get; set; }
[Reference]
public MasterItem MasterItem { get; set; }
[Alias("MasterItem_id")]
public long MasterItemId { get; set; }
}
db.CreateTable<MasterItemAlias>();
var newMasterItem = new MasterItem {
Code = "MI_CODE"
};
db.Save(newMasterItem);
var y = db.LoadSelect<MasterItemAlias>();
注意:您只需要
[AutoIncrement]
,这也使其成为主键