sql >> Databasteknik >  >> RDS >> Sqlserver

Kan LINQ-till-SQL utelämna ospecificerade kolumner vid infogning så att ett standardvärde för databasen används?

Tyvärr stöder inte Linq till SQL databasens standardvärden. Se den första frågan här:

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

Vad de föreslår är att du tillhandahåller en implementering av Insert-metoden för den aktuella enheten. Signaturen är

partial void Insert[EntityName](Entity instance)

Så om du hade en enhet som heter Person, som du vill ha standardvärdet "Hem" för ett PhoneNumberDesc-fält, kan du implementera det så här:

    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());
    }

Du kanske kan komma undan med att implementera OnCreated-händelsen, som anropas med varje konstruktör för varje entitet. Den här artikeln förklarar lite om hur töjbarheten pekar i Linq To SQL:http://msdn.microsoft.com/en-us/library/bb882671.aspx

Sammantaget är lösningen riktigt dålig. Lycka till!



  1. Oracle ORA-12154:TNS:Kunde inte lösa tjänstens namnfel?

  2. Oracle DateTime i Where-klausul?

  3. En stor sak:SQL Server 2016 Service Pack 1

  4. Oracle skiljer inte mellan nollor och tomma strängar?