1
我試圖加載,這不是在「FileObjectMetaData」表CodeFluent.Basically這個職位轉換查詢CodeFluent引用的所有「標籤」記載:Codefluent加載所有未引用記錄
Elegant way to delete rows which are not referenced by other table
我有這個表的關係:
我如何能夠達到這種效果呢?
編輯一:
這是一個許多人在CodeFluent模型一對多的關係,所以在實際生成的SQL表有一個包含中間連結表:
- TAG_ID
- FileObjectMetaData_ID
Tag和FileObjectMetaData表本身沒有外鍵彼此直接。
編輯二:
最終,我選擇了主動C#方法這一點,因爲似乎沒有被使用CodeFluent CFQL了堅實的方式。
public static TagCollection LoadUnusedTags()
{
TagCollection unusedTags = new TagCollection();
TagCollection allTags = TagCollection.LoadAll();
foreach (Tag aTag in allTags)
{
FileObjectMetaDataCollection fileObjectMetaDatas = FileObjectMetaDataCollection._LoadByTag(aTag.Name);
if (fileObjectMetaDatas.Count < 1)
unusedTags.Add(aTag);
}
if (unusedTags.Count < 1)
return null;
return unusedTags;
}
這不起作用,因爲我的FileObjectMetaData表中沒有「FileObjectMetadata_Tag_Id」,也沒有「$ FileObjectMetadata :: Tag $」。 請參閱我的第一個編輯。 – Oniisaki
我編輯了我的答案。雖然仍然可以使用「目標名稱轉換」來獲取多對多表格及其列的名稱,但它更復雜,因此我更願意直接使用表名稱。 – meziantou
由於此方法不使用CFQL,因此如果屬性命名格式發生變化,這將在沒有任何人知道的情況下中斷。 因此,我只使用C#方法。 (現在我的解決方案添加到編輯二) – Oniisaki