Reputation: 12085
How do I tell a LINQ data context to ignore either specific properties, or all readonly properties, when binding a result set to an object?
I am working with some T-SQL statements that are difficult to express using LINQ, so I'm using the ExecuteQuery method of the data context to pass the straight T-SQL to the database.
If my class T has any readonly properties, I get exceptions at runtime when the data context tries to set those properties and fails because there's no setter property. How do I tell the context to ignore those properties?
This is what I'm doing now. It works, but it sucks:
public bool IsPaidInFull {
get { return NetTotal <= 0m; }
set { /* needed so linq doesn't choke. Should never be set by hand */ }
}
Upvotes: 9
Views: 1949
Reputation: 780
public bool IsPaidInFull
{
get { return NetTotal <= 0m; }
private set { ;}
}
Upvotes: 1
Reputation: 1490
Have you considered Linq to Entities? It may not be worth the trouble to convert your project, depending on how far along you are, or how much orm overhead you are comfortable with. However, this exact scenario would not be a problem in Linq to Entities. It does not try to update read only properties in the object when loading it, because they are not explicitly mapped, they are simply extension properties.
Also, you could go the old-school/java route by using getter functions instead of properties. public bool getIsPaidInFull(){return NetTotal <= 0m;}.
Or you could play around with implementing the read only properties in an inherited child class, but that may introduce all sorts of type issues.
Upvotes: 0