LINQ到SQL,从继承的类中选择

本文关键字:选择 继承 SQL LINQ | 更新日期: 2023-09-27 18:18:52

LINQ to SQL与对象关系设计假设我们有一个class Animal,它有两个继承的类,命名为CatDog。我们可以很容易地加载"Animal"类和它的属性:

var animals = from a in dataContext.Animals
              select a;

然而,当试图加载CatDog时,dataContext既没有Cats也没有Dogs的属性。如何从表Animal加载CatDog与他们自己的额外属性?

提前感谢。

LINQ到SQL,从继承的类中选择

使用OfType<T>:

var dogs = from a in dataContext.Animals.OfType<Dog>()
              select a;

对于猫:

var cats = from a in dataContext.Animals.OfType<Cat>()
              select a;

如这里所示

…这里有一个完整的例子

项目到一个新的猫或新的狗:

猫:

var animals = from a in dataContext.Animals
              select new Cat {
                  CatProperty = a.Property
              };

狗:

var animals = from a in dataContext.Animals
              select new Dog {
                  DogProperty = a.Property
              };