簡體   English   中英

如何在 Xamari 表單中使用 SQLite 為同一個表創建兩個外鍵

[英]How to create two foreign keys to the same table with SQLite in Xamari Form

我在使用 C# 的 Xamarin 表格的項目中工作。 我正在嘗試使用以下代碼為同一個表創建兩個外鍵:

[Table("Posts")]
public class Post
{
    [PrimaryKey]
    public long PostID { get; set; }
    public string Name { get; set; }

    public TypeEntity mode = null;
    [ManyToOne(CascadeOperations = CascadeOperation.CascadeInsert)]
    public TypeEntity Mode
    {
        get
        {
            return mode;
        }
        set
        {
            mode = value;
        }
    }
    [ForeignKey(typeof(TypeEntity))]
    public long ModeID { get; set; }

    public TypeEntity level = null;
    [ManyToOne(CascadeOperations = CascadeOperation.CascadeInsert)]
    public TypeEntity Level
    {
        get
        {
            return level;
        }
        set
        {
            level = value;
        }
    }
    [ForeignKey(typeof(TypeEntity))]
    public long LevelID { get; set; }
}

[Table("Types")]
public class TypeEntity
{
    [PrimaryKey]
    public long TypeID { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }
}

如您所見,屬性 Mode 和 Level 是類型“TypeEntty”,所以我需要創建關系。 當我嘗試插入數據時,只插入了“模式”屬性,“級別”屬性停留在 null。

public abstract class BaseStore<T> where T : new()
{
    public static SQLiteConnection sql;

    public BaseStore()
    {
        sql = DependencyService.Get<ISQLite>().GetConnection();
        Init();
    }
    public void Init()
    {
        sql.CreateTable<T>();
    }

    public void Insert(T entity)
    {
        sql.InsertWithChildren(entity);
    }
}

我切換了屬性順序,我先添加了Level而不是Mode,然后Level得到了值。 這意味着,SQLIte 僅采用第一個屬性來創建關系。

有誰知道為什么這不起作用?

我正在使用 SQLite.Net.Core-PCL 3.1.1 和 SQLiteNetExtensions 2.1.0。

您必須手動指定每個關系對應的外鍵。 為此,請在每個ManyToOne屬性中傳遞ForeignKey參數。

現在無法測試它,但它可能看起來像這樣:

[ManyToOne(ForeignKey = "ModeID", CascadeOperations = CascadeOperation.CascadeInsert)]
public TypeEntity Mode

(...)

[ManyToOne(ForeignKey = "LevelID", CascadeOperations = CascadeOperation.CascadeInsert)]
public TypeEntity Level

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM