I encounter a "Lazy IO Problem" in Linq and I have not found a solution that I like
Problem setting
Say we have SQL tables that look like
create table Person (
id int primary key not null,
name text not null,
)
create table Dog (
name text primary key not null,
ownerid text primary key not null references Person(name)
)
And in C # we want to use LINQ and Entity Framework to solve this problem. Entity Framework classes are defined as partial, so we can extend them to add a method .Get(string), and this makes very clean code.
public partial class Dog
{
public static Dog Get(string dogname)
{
using (var db = new MyDataContext())
{
return db.Dogs.Single(d => d.name == dogname);
}
}
}
In case of a problem
Now we are trying to use the object Dogfor something
public string DogJson(string dogname)
{
var dog = Dog.Get(dogname);
return JsonConvert.SerializeObject(dog);
}
Dog dog.Owner - , JsonConvert, , json. DataContext LINQ , ObjectDisposedException, , , dog.Person , DataContext.
Owner, Dog json. ?
, . Dog, Dog .
public static Dog Get(string dogname)
{
using (var db = new MyDataContext())
{
var tmpdog = db.Dogs.Where(d => d.name == dogname)
.Select(d => new { name = d.name, ownerid = d.ownerid}).Single();
return new Dog() { name = tmpdog.name, ownerid = tmpdog.ownerid};
}
}
, . , - . LINQ , .
, .