Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过EF从表中选择时,我可以为输出指定新属性吗?_C#_Linq_Entity Framework - Fatal编程技术网

C# 通过EF从表中选择时,我可以为输出指定新属性吗?

C# 通过EF从表中选择时,我可以为输出指定新属性吗?,c#,linq,entity-framework,C#,Linq,Entity Framework,我保证所有这些例子都会引出一些连贯的观点,请随意浏览,这是基本的东西,直到最后(甚至可能到那时): 我可以从该表中进行如下选择: var samples = from sample in myDb.Samples select new //anonymoys type { Id = sample.Id, Name = sample.Name }; 或 但是,如果我想选择DbSet模型的属性(/表中的列)并添加一些自定义数据,例如

我保证所有这些例子都会引出一些连贯的观点,请随意浏览,这是基本的东西,直到最后(甚至可能到那时):

我可以从该表中进行如下选择:

var samples =
    from sample in myDb.Samples
    select new //anonymoys type
    {
        Id = sample.Id,
        Name = sample.Name 
    };

但是,如果我想选择DbSet模型的属性(/表中的列)并添加一些自定义数据,例如:

var samples =
    from sample in myDb.Samples
    select new 
    {
        Id = sample.Id,
        Name = sample.Name 
        TableName = 'Samples'
    };
我已经尝试了上面的代码,它工作了,但是,我以后无法编辑“TableName”-收到一个错误,说明它是只读的。然后,我创建了一个新模型“SampleViewModel”,并为其提供了一个TableName属性,但这产生了以下异常:

EntityFramework.SqlServer.dll中发生了类型为“System.NotSupportedException”的首次意外异常


希望这是清楚的,并解释了我在标题中的要求。如果有人好奇的话,实际上我正在做的是创建一个包含5个表的联合(.concat in EF),并试图避免在表中放入冗余信息,例如表名。我可能遗漏了一些明显的东西

匿名类具有只读属性。顺便说一句,用初始化的属性投射到可编辑的匿名类型是不容易的

然而,您应该能够投射到您定义的自定义类型中,但是,请记住,这样做可以说“切断了您的连接”:从那以后,您就不再是SQL land中的一员了,它都在内存中。如果从那里开始执行任何
条件,则将在客户端执行,这意味着所有候选人都将被拉到客户端。也就是说,要做到这一点,你需要做如下的事情:

var samples =
from sample in myDb.Samples
select new CustomClass
{
    Id = sample.Id,
    Name = sample.Name 
    TableName = "Samples"
};
public class CustomClass
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string TableName { get; set; }
}
其中
CustomClass
如下所示:

var samples =
from sample in myDb.Samples
select new CustomClass
{
    Id = sample.Id,
    Name = sample.Name 
    TableName = "Samples"
};
public class CustomClass
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string TableName { get; set; }
}