sql >> データベース >  >> RDS >> Sqlserver

LINQ-to-SQLは、データベースのデフォルト値が使用されるように、挿入時に指定されていない列を省略できますか?

    残念ながら、LinqtoSQLはデータベースのデフォルト値をサポートしていません。ここで最初の質問を参照してください:

    http:// social.msdn.microsoft.com/forums/en-US/linqprojectgeneral/thread/3ae5e457-099e-4d13-9a8b-df3ed4ba0bab/

    彼らが示唆しているのは、問題のエンティティにInsertメソッドの実装を提供することです。署名は

    partial void Insert[EntityName](Entity instance)
    

    したがって、Personというエンティティがあり、PhoneNumberDescフィールドのデフォルト値を「Home」にしたい場合は、次のように実装できます。

        partial void InsertPerson(Person instance)
        {
            if (string.IsNullOrEmpty(instance.PhoneNumberDesc))
                instance.PhoneNumberDesc = "Home";
    
            var insertParams = new List<object>();
            var insertStatement = "insert into ...";
    
            // build the rest of the insert statement and fill in the parameter values here...
    
            this.ExecuteQuery(typeof(Person), insertStatement, insertParams.ToArray());
        }
    

    各エンティティの各コンストラクターで呼び出されるOnCreatedイベントの実装を回避できる場合があります。この記事では、LinqToSQLの拡張性がどのようにポイントするかについて少し説明します。 http: //msdn.microsoft.com/en-us/library/bb882671.aspx

    全体として、ソリューションは本当にちょっとひどいです。頑張ってください!



    1. SQL UPDATE構文–DBMSによってリストされます

    2. JavaMySQLタイムスタンプのタイムゾーンの問題

    3. SQL Serverでのdatetimeとdatetimeoffsetの違い:違いは何ですか?

    4. php/mysqlでの重複行挿入の防止