首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将EF表数据分配给列表

我需要从表中获取特定的原始列值。我按如下方式编写代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public List<MessageTemplateDto> GetMessageTemplate(int tenantId,NotifyVia notifyVia,string notifyEvent)
{

    ClientContext context = clientContextFactory.GetContext(tenantId);
    List<MessageTemplateDto> msgTemplate = new List<MessageTemplateDto>();
    var xx = context.MessageTemplates.Where(m => m.NotifyEvent == notifyEvent && m.SendVia == notifyVia.ToString()).ToList();
    msgTemplate.Add(xx);
    return msgTemplate;
}

但是上面的代码给出了这个错误,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cannot convert from 'System.Collections.Generic.List<Kronos.FMSI.LT.EFModel.ClientData.MessageTemplate>' to 'Kronos.FMSI.LT.Api.Interface.Models.Notification.MessageTemplateDto'

我的DTO类如下所示,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MessageTemplateDto
{
    public int TemplateID { get; set; }
    public string NotifyEvent { get; set; }
    public string SendVia { get; set; }
    public string Template { get; set; }
}

我做错了什么?正如我前面提到的,我需要从原始数据中获取一个列值(Template值)。我需要把返回类型写成List<MessageTemplateDto>吗?如果我使用返回类型作为字符串,这不是一个好的做法吗?

EN

回答 1

Stack Overflow用户

发布于 2019-10-18 05:03:36

您必须使用.Select()创建新的MessageTemplateDto并设置要填充的每个属性:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
return context.MessageTemplates
  .Where(m => m.NotifyEvent == notifyEvent && m.SendVia == notifyVia.ToString())
  .Select(r => new MessageTemplateDto() {
      TemplateID = r.WhateverTheColumnNameForIdIsInYourMapping,
      r.NotifyEvent //both column and dto property have same name so this can be simplified
      r.SendVia //again, both dto and column seem to have the same name so this can simply be this
      Template = r.WhateverYourColumnNameForTemplateIsInTheContext 
    }
  .ToList();

在select中,r表示由上下文传递的表行,因此r中的列名将是您在映射中设置的名称。您没有显示映射,所以我不知道您的一些列名是什么

这不是抛出的唯一方法,您还可以在Dto中提供一个构造函数,该构造函数接受表示实体的类型的对象,然后在构造函数中设置属性。这通常不太常见,因为它将您的Dto对象套件绑定为依赖于您的实体域,并且它们可能应该是分开的。您可以在运行此查询的存储库类中创建一个Map方法;map接受一个db实体并返回一个dto;这取决于您将执行此操作的次数-如果这是您查询此表并创建模板数据列表的唯一位置,则没有必要为其创建映射方法。

归根结底,最初的问题是您的原始查询返回一个db实体对象列表,并且它们不能直接分配给一个声明为只有一个dto对象列表的列表,因为它们是不同的对象。就像将汽车类型对象的列表分配给列表一样-相反,您必须使用Select从数据实体生成Dto。Dto通常是不同的、更轻的、更少的属性,可能是一些不在数据库中的计算属性(如dto具有Age,数据库具有bitthdaye),并用于将少量数据移动到其他位置,甚至可能通过网络,因此它们更小

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58444186

复制
相关文章
EF 下如何更新数据表数据
转载请注明出处:http://www.cnblogs.com/zhiyong-ITNote/
Ryan_OVO
2023/10/19
1790
【EF】数据表全部字段更新与部分字段更新
在更新数据库的过程中,出现了” 更新条目时出错。有关详细信息,请参见内部异常。“的问题。
全栈程序员站长
2022/08/09
1.8K0
Python - 如何将 list 列表作为数据结构使用
使用 collections.deque ,它被设计成可以快速从两端添加或弹出元素
小菠萝测试笔记
2021/07/29
2.2K0
Python - 如何将 list 列表作为数据结构使用
数据结构:线性表——2.2 列表
不同数据结构内部的存储与组织方式各异,其操作接口的使用方式及时空性能也不尽相同。引入列表结构的目的在于弥补向量结构在解决某些应用问题时,在功能及性能方面的不足。二者之间的差异,表面上体现于对外的操作方式,但根源则在于其内部存储方式的不同。
浪漫主义狗
2022/09/30
1.6K0
数据结构:线性表——2.2 列表
数据结构:线性表——2.2 列表
不同数据结构内部的存储与组织方式各异,其操作接口的使用方式及时空性能也不尽相同。引入列表结构的目的在于弥补向量结构在解决某些应用问题时,在功能及性能方面的不足。二者之间的差异,表面上体现于对外的操作方式,但根源则在于其内部存储方式的不同。
浪漫主义狗
2023/09/04
3470
数据结构:线性表——2.2 列表
EF Core 数据验证
数据验证是每个项目必须存在的,可以防止不符合系统规范的数据进入系统进而导致系统不稳定甚至崩溃。我们可以自己编写代码(包括前台和后台代码)进行验证,但是这样一方面代码量较大,另一方面有可能验证代码覆盖不完全。但是在 Entity Framework Core (以下简称 EF Core )中这些问题全可以解决。在 EF Core 中有两种验证模式,分别是内置模型验证和第三方扩展模型验证。下面我分别对这两种模式进行讲解,在讲解前我们先来创建必须的模型。
喵叔
2020/09/08
1.2K0
散列表(哈希表)
概述 什么是散列表? 如果说起它的另一个名字, 你一定很熟悉, 它的英文叫"Hash Table", 哈希表, 很熟悉吧. 散列的思想, 其实就是利用数组的随机访问特性, 将key-value形式的数
烟草的香味
2019/07/25
6670
散列表(哈希表)
序言: 如果将一系列的记录按照关键字的某种函数存储,那么在查找某个数据的时候就可以直接通过关键字计算出来了,而不在需要“比较”,这样会非常高效,这就是散列技术。 所以散列技术就是:     存储位置=f(关键字)        不管是记录的存储还是查找,都用这种方法 散列技术具有很高的效率,但是使用起来有一些限制。如1个关键字对应多个记录的情况(比如在一个学校的学生中按性别查找,则对应太多的记录),此外散列技术同样不适合于范围查找和排序等操作。 一、散列函数的构造 在设计散了函数的时候主要考虑两个原则: (
用户1215536
2018/02/05
7000
散列表(哈希表)
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/83998492
zy010101
2019/05/25
7220
数据结构 单一列表
#ifndef LINKLIST_H #define LINKLIST_H #include<iostream> using namespace std; template <typename T> struct Node { T data; Node<T> *next; }; template <typename T> class LinkList { public: LinkList(); //无參构造函数,建立仅仅有头结点的空链表 LinkList(T a[], int n); //有參构造函数,建立由n个元素的单链表 ~LinkList(); //析构函数 int Length(); //求单链表的长度 T Get(int i); //按位查找,查找单链表中的第i个元素的数值 int Locate(T x); //查找该元素在单链表中的位置 void Insert(int i, T x); //在第i个位置插入该元素 T Delete(int i); //删除第i个元素 void PrintList(); //打印单链表 private: Node<T> *first; //创建单链表的头指针 }; template <typename T> LinkList<T>::LinkList() { Node<T> *first; //申明头结点 first = new Node<T>; //生成头结点 first->next = NULL; //初始化头节点 } template <typename T> LinkList<T>::LinkList(T a[], int n) { Node<T> *r, *s; //申明两个暂时结点 first = new Node<T>; //生成头结点 r = first; //尾指针初始化 for (int i = 0; i < n; i++) { s = new Node<T>; //生成S结点来存储数组中相应的元素 s->data = a[i]; //将数组中相应的元素赋值到相应结点的数值部位 r->next = s; r = s; //上两部是将s插入到终端结点之后 } r->next = NULL; } template <typename T> LinkList<T>::~LinkList() { Node<T> *q = NULL; //建立一个空的结点 while (first != NULL) //该循环释放结点的存储空间 { q = first; first = first->next; delete q; } } template <typename T> int LinkList<T>::Length() { Node<T>*p=first->next; int count = 0; //初始化 while (p != NULL) { p = p->next; //p指针后移 count++; } return count; } template <typename T> T LinkList<T>::Get(int i) { Node<T> *p = first->next; int count = 1; while (p != NULL&&count < i) { p
全栈程序员站长
2022/07/06
3570
JS数据结构之哈希表(散列表)
散列表(或哈希表,HashMap)是一种最优时间复杂度可以达到O(1)的数据结构,其原理是根据指定键的hash值来确定它在表中的大致位置,之后再去寻找。在介绍这个数据结构如何实现之前,先让我们看看散列函数的相关知识。
kifuan
2022/10/24
1.2K0
JS数据结构之哈希表(散列表)
EF 通用数据层类
转载:http://www.cnblogs.com/yq-Hua/p/4165344.html
跟着阿笨一起玩NET
2018/09/20
8380
Entity Framework(EF)数据查询
EF,有一个容器管理着里面所有附着在其上的对象。它们通过一种叫Object Tracking的机制来跟踪对象的变化,以便于在用户需要的时候把这些变化持久化到数据库中去。有时候,我们可能并不需要改动数据(比如我们只是简单地取出一个Entity然后把它绑定到UI上面去),那么在这个时候,Tracking机制就比较多余了。在EF中,我们可以以MergeOption.NoTracking=false来取得同样的效果。
javascript.shop
2019/09/04
1K0
EF大数据批量处理----BulkInsert
之前做项目的时候,做出来的系统的性能不太好,在框架中使用了EntityFramework,于是就在网上查资料,研究如何提高EF的性能。 在这分享一篇博客 批量操作提升EntityFramework的性能 里面提供了一个扩展库Entity Framework扩展库,在这里面找到了一些比较好的方法。下面主要介绍其中的一个方法—-批量添加BulkInsert。
令仔很忙
2018/09/14
1.2K0
EF大数据批量处理----BulkInsert
Excel 如何将表中行列互换
在工作中,我们发现有时候需要将表中的行列进行互换。之前我们讲了SQL中的操作,那么如果是Excel如何实现呢?
繁华是客
2023/03/03
1.1K0
Excel 如何将表中行列互换
SQL 如何将表中行列互换
使用PIVOT需要注意的是,必须把其他列中同一学生不同信息列隐藏才可以。 例如:我们把一行一行列出的科目变成一列一列,我们的SubjectChineseName就要隐藏掉,否则Pivot出来的结果是同一个学生一样有四行。 只不过右边多出了四列科目而已。 我这里先CAST是因为需要转换格式,从NVARCHAR转为FLOAT。 如果我想要转换的行列数据不是数字的话,应该用什么? 我们可以通过COUNT得到出现的次数,也可以通过MIN()或者MAX()直接显示内容。
繁华是客
2023/03/03
1.1K0
c语言哈希表数据结构_c语言列表数据结构
哈希表的特点就是数据与其在表中的位置存在相关性,也就是有关系的,通过数据应该可以计算出其位置。
全栈程序员站长
2022/09/27
1.8K0
c语言哈希表数据结构_c语言列表数据结构
什么是散列表(哈希表)?
假设你们班级100个同学每个人的学号是由院系-年级-班级和编号组成,例如学号为01100168表示是1系,10级1班的68号。为了快速查找到68号的成绩信息,可以建立一张表,但是不能用学号作为下标,学号的数值实在太大。因此将学号除以1100100取余,即得到编号作为该表的下标,那么,要查找学号为01100168的成绩的时候,只要直接访问表下标为68的数据即可。这就能够在O(1)时间复杂度内完成成绩查找。
编程珠玑
2019/07/12
6400
哈希表(散列表)原理详解
哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构 。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
233333
2019/05/25
8.7K0
点击加载更多

相似问题

如何将数据表分配给输入?

13

如何将数组列表分配给特定的数据?

12

EF相关数据下拉列表

00

如何使用EF Core正确更新表中的列表数据

132

如何将列名分配给数据集中的表?

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文