2016-05-23 1 views
0

私はそうのようなテーブルを持っている:EF 6を使用してMySQLのコネクタ6.9.8とMySQL 5.5.21場合DBFirst - MySQL ConnectorとEF6を使用して、StoreGeneratedPattern = Computedとしてタイムスタンプ列を認識する方法?

CREATE TABLE `incidentdata` (
    `IncidentDataID` int(11) NOT NULL AUTO_INCREMENT, 
    `GUID` binary(16) NOT NULL, 
    `LastModified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `Incident_ID` int(11) NOT NULL, 
    `Parameter_ID` int(11) NOT NULL, 
    `Value` varchar(255) NOT NULL DEFAULT '', 
    PRIMARY KEY (`IncidentDataID`), 
    UNIQUE KEY `GUID_UNIQUE` (`GUID`), 
    KEY `FK_INCDATA_INC` (`Incident_ID`), 
    KEY `FK_INCDATA_PAR` (`Parameter_ID`), 
    CONSTRAINT `FK_INCDATA_INC` FOREIGN KEY (`Incident_ID`) REFERENCES `incidents` (`IncidentID`) ON DELETE NO ACTION ON UPDATE NO ACTION, 
    CONSTRAINT `FK_INCDATA_PAR` FOREIGN KEY (`Parameter_ID`) REFERENCES `eventparameters` (`ParameterID`) ON DELETE NO ACTION ON UPDATE NO ACTION 
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$ 

、DBを介してモデルを更新する第一常にStoreGeneratedPattern = NoneすべきLastModified列を設定します。

私はこのテーブルにレコードを挿入すると、LastModifiedカラムは常に0である - 私はレコードを更新すると、所望のようSystem.DateTime = 0の.NETのデフォルト値は、そのLastModified値は次にCURRENT_TIMESTAMPに更新されるからです。

私は回避策として使用できる2つのオプションを発見した:手動StoreGeneratedPattern =「計算結果」を変更

  1. を。
  2. NULLを許可するように列を設定してから、EFに挿入するときに、LastModifiedの値を明示的にnullに設定します。これは、毎日です。

お分かりのように、どちらの方法も何かを覚えておく必要があります。忘れてしまったことです。

また、OnModelCreating()を使用してこの列のComputedプロパティを強制しようとしましたが、動作しないようです。

DBからモデルを更新するときに、LastModified列がComputedに正しく認識される方法はありますか?

答えて

0

私はMySQLとEFから離れて移動するので、持っている - ToListAsync()のような非同期実装を使用した場合、マイナー癖は、特に、その実装であるFirstOrDefaultAsync()など

誰もがこのパスダウンした場合、ちょうど覚えているそれはしばらく " EFで非同期メソッドを使用すると、たとえば '読み取り専用テーブル'などの奇妙な例外が表示されるようになります。

EFだけを使用して質問を達成する方法はありませんが(SQL Serverでもそうではありません)。

関連する問題