sql >> Database >  >> RDS >> Sqlserver

Kan LINQ-naar-SQL bij het invoegen niet-gespecificeerde kolommen weglaten, zodat een standaardwaarde voor de database wordt gebruikt?

Helaas ondersteunt Linq to SQL geen standaardwaarden voor databases. Zie hier de eerste vraag:

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

Wat ze suggereren, is dat u een implementatie van de Insert-methode voor de entiteit in kwestie opgeeft. De handtekening is

partial void Insert[EntityName](Entity instance)

Dus als u een entiteit had met de naam Persoon, waarvan u de standaardwaarde "Home" voor een veld PhoneNumberDesc wilde hebben, zou u dit op deze manier kunnen implementeren:

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

U kunt mogelijk wegkomen met het implementeren van de OnCreated-gebeurtenis, die met elke constructor voor elke entiteit wordt aangeroepen. Dit artikel legt een beetje uit hoe de uitbreidbaarheid wijst in Linq To SQL:http://msdn.microsoft.com/en-us/library/bb882671.aspx

Al met al is de oplossing echt een beetje klote. Veel succes!



  1. Waarom krijg ik Procedure verwacht parameter '@statement' van het type 'ntext/nchar/nvarchar'. wanneer ik sp_executesql probeer te gebruiken?

  2. Hoe kan ik een enkele mssql-verbindingspool gebruiken voor meerdere routes in een Express 4-webtoepassing?

  3. Is er een manier om overbelasting van functies in Postgres uit te schakelen?

  4. Een database verbinden met een Amazon VPC