[seasar-dotnet:2494] Re: DBFlute.Net SQLServerのFileTableについて

志水正幸 [E-MAIL ADDRESS DELETED]
2016年 5月 29日 (日) 10:20:15 JST


志水です。

久保さんこんにちは。
毎度ありがとうございます。

>コンパイルエラーは、
>DBFluteがbyte[]型のFKキーをサポートしていないので、
>byte[]型のParentPathLocatorやPathLocatorが
>FKのキーカラムになっていることで発生していると考えられます。
そうですか。では仕方ないですね。

>ちなみに、そららカラムが hierarchyid という型になってますが、
>FileTableと関連の型でしょうか?
はいそうです。FileTableのカラムはSQLServerの仕様で
使う側は、正味、実ファイルの格納場所とテーブル名が決められる程度みたいです。

>また、ChokyoFileTable へのFKを明示的に付与しています?
DBFLUTE側ではFKになるような何も設定してません。


現在の状況はというと
とりあえず、エラー箇所はすべてコメントアウトしてエラーを解消しました。
しかし、通常のものは利用できないと思ったので
SELECT,INSERT,UPDATE,DELETEの外だしSQLを作成して試しました。
SELECT時には、DATETIMEOFFSET型カラムでキャストのエラーが発生してしまうので
DATETIME2にCONVERTするSQLに変更して、必要最小限のカラムを取得する形にすると
SELECTできるようになりました。

次にINSERTを試したのですが、
最小限のFILESTREAMとNAME、IsDirectoryなどのフラグのみ
にしたのですが、SQLServer上では問題ないのですが
アプリ側だとpmb変数がバインドできないというエラーがでて
どうしてもできないので結局ココであきらめました。

-- !df:pmb!
-- !!byte[] filedata!!
-- !!String name!!
-- !!bool? directoryflg!!
-- !!bool? offlineflg!!
-- !!bool? hiddenflg!!
-- !!bool? readonlyflg!!
-- !!bool? archiveflg!!
-- !!bool? systemflg!!
-- !!bool? temporaryflg!!


INSERT INTO ChokyoFileTable
            (file_stream
            ,name
            ,is_directory
            ,is_offline
            ,is_hidden
            ,is_readonly
            ,is_archive
            ,is_system
            ,is_temporary)
      VALUES
            (pmb.Filedata
             ,pmb.Name
			,pmb.Directoryflg
			,pmb.Offlineflg
			,pmb.Hiddenflg
			,pmb.Readonlyflg
			,pmb.Archiveflg
			,pmb.Systemflg
			,pmb.Temporaryflg)


たぶん、UPDATEも同様かなと思うので、SELECTのみ使用するか
FileTableは使用するけど、DBFLUTEには含めないようにするかを検討した結果
後者にして、FileTableはSQLSERVER管理下のFILE共有にはなるのでServer自体で共有設定しなくて済むし、
フルテキスト検索が可能になるみたいなので、何かの際に役に立ちそうなのでFileTableの利用は
しとこうかと思ってます。

まぁ、結局、APIで共有接続して、結局昔ながらの実ファイルをごにょごにょして使う形になるかと。。


以上







> 久保(jflute)です
>
> 志水さん、こんにちは
>
> コンパイルエラーは、
> DBFluteがbyte[]型のFKキーをサポートしていないので、
> byte[]型のParentPathLocatorやPathLocatorが
> FKのキーカラムになっていることで発生していると考えられます。
>
> ちなみに、そららカラムが hierarchyid という型になってますが、
> FileTableと関連の型でしょうか?
>
> また、ChokyoFileTable へのFKを明示的に付与しています?
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>



seasar-dotnet メーリングリストの案内