Linq To SQL - how to have property not from table

2019-06-03 22:30发布

问题:

We are using Linq To SQL with our own data context logic that executes the one linq query across multiple databases. When we get the results back, we need the database for each of the rows. So...

I want to have a property on my class that will return the database name (SQL Server, so DB_NAME()). How can I do this in Linq To Sql?

NOTE: We have hundreds of databases and do not want to put views in each db. The return should come back as just another property on each row of the return result set.

回答1:

In the DBML XML file, you can set the Expression attribute of a Column element to this:

 <Column Name="Table1.DBName" 
         DbType="nvarahcar(128)" 
         Type="System.String" 
         Expression="DB_NAME()" />


回答2:

How are you iterating through the different databases? Could you just include information from the context in the query? For example:

Dim results = _
    From x In myContext.MyTables _
    Select x, info = myContext.Connection.ConnectionString


标签: linq-to-sql