ORMLite映射参考别名列

问题描述 投票:1回答:1

我为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>();
c# servicestack ormlite-servicestack
1个回答
1
投票

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],这也使其成为主键

© www.soinside.com 2019 - 2024. All rights reserved.