[筆記].Net MVC利用EF時,由SQL Server自動產生NewID()欄位值

資料表設計PK是uniqueidentifier型態,預設值在DB也設定NewID()

但在程式中卻一定要給Guid.NewGuid();

原來是紅框地方設錯了

原來StoreGeneratedPattern三個選項None/Computed/Identity,後2個有點點差異

Computed:新增和修改時,都引用DB設定,所以一般流水號遞增或預設系統日,都可以正常Work

Indentity:只有新增時,引用DB設定

或我只想用SQL SERVER預設值功能,沒有要去弄trigger什麼,所以我應該只對新增時有興趣

一開始將ruleid設Computed都無作用,但CreateDate設Computed是Work的

查了一下才知,這裡的Identity是唯一的概念,所以像guid這種唯我獨尊的,要選用這個,才能Work

所以如果型態是guid的值,記得選Identity

至於creaedate/modifydate一般都會新增時填入系統入,修改時只改modifydate

所以,createdate請選computed(identity也work),但modifydate需選none,否則修改時,DB是不會幫你更新欄位值的。。因為咱們設的是預設值

試過將modifydate設成identity,修改時再由程式去更新,但。。。不work,所以只要選非None,看起來都不接受程式update值

所以將modifydate選noe,再由程式去更新系統日。。。

        public IWDASResult Create(accrule instance)
        {
            IWDASResult result = new WDASResult(false);
            try
            {
                instance.modifydate = System.DateTime.Now;
                this._Repository.Create(instance);
                result.Success = true;
            }
            catch(Exception ex)
            {
                result.Exception = ex;
            }
            return result;
        }

        public IWDASResult Update(accrule instance)
        {
            IWDASResult result = new WDASResult(false);
            try
            {
                instance.modifydate = System.DateTime.Now;
                this._Repository.Update(instance);
                result.Success = true;
            }
            catch (Exception ex)
            {
                result.Exception = ex;
            }
            return result;

        }

 

打雜打久了,就變成打雜妹

程式寫久了,就變成老乞丐