我目前收到此错误:
System.Data.SqlClient.SqlException:不允许新事务,因为会话中还有其他线程在运行.
在运行此代码时:
public class ProductManager : IProductManager
{
#region Declare Models
private RivWorks.Model.Negotiation.RIV_Entities _dbRiv = RivWorks.Model.Stores.RivEntities(AppSettings.RivWorkEntities_connString);
private RivWorks.Model.NegotiationAutos.RivFeedsEntities _dbFeed = RivWorks.Model.Stores.FeedEntities(AppSettings.FeedAutosEntities_connString);
#endregion
public IProduct GetProductById(Guid productId)
{
// Do a quick sync of the feeds...
SyncFeeds();
...
// get a product...
...
return product;
}
private void SyncFeeds()
{
bool found = false;
string feedSource = "AUTO";
switch (feedSource) // companyFeedDetail.FeedSourceTable.ToUpper())
{
case "AUTO":
var clientList = from a in _dbFeed.Client.Include("Auto") select a;
foreach (RivWorks.Model.NegotiationAutos.Client client in clientList)
{ …Run Code Online (Sandbox Code Playgroud) 我刚刚将我的ASP Web API项目从.Net core 2.0升级到3.0。我在用
services.AddMvc()
.AddJsonOptions(options =>options.SerializerSettings.ContractResolver
= new DefaultContractResolver());
Run Code Online (Sandbox Code Playgroud)
以前是为了确保序列化JSON的小写字母。
升级到3.0后,出现此错误...
错误CS1061'IMvcBuilder'不包含'AddJsonOptions'的定义,找不到可以接受的扩展方法'AddJsonOptions'接受类型为'IMvcBuilder'的第一个参数(是否缺少using指令或程序集引用?)
根据Asp.Net Core 2.2中MvcJsonOptions的AddJsonOptions,Microsoft.AspNetCore.Mvc.Formatters.Json nuget包提供了AddJsonOptions扩展方法。我尝试安装/重新安装此程序,但仍然无法解决该方法。有趣的是,智能感知仅显示Microsoft.AspNetCore.Mvc.Formatters。即使我添加了Json nuget包,当我尝试添加using语句时也使用Xml。
有什么想法吗?该文档为AddJsonOptions只上升到.NET 2.2所以也许是方法已经在3.0赞成一些其他配置机制的被弃用?
我有一个表MySQL数据库的entites与它的多个领域,如ENTITY_TITLE,entity_description,....在表中还有3个外键user_id,region_id是category_id.
在我的索引视图中,我想显示表中的所有实体(显示标题,描述,...,用户名,区域名称和类别名称).
这是我在我的控制器中所做的:
public ActionResult Index()
{
var model = this.UnitOfWork.EntityRepository.Get();
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
在我的存储库中,我这样做:
public virtual IEnumerable<TEntity> Get(
Expression<Func<TEntity, bool>> filter = null,
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
string includeProperties = "")
{
IQueryable<TEntity> query = _dbSet;
if (filter != null)
{
query = query.Where(filter);
}
foreach (var includeProperty in includeProperties.Split
(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(includeProperty);
}
if (orderBy != null)
{
return orderBy(query).ToList();
}
else …Run Code Online (Sandbox Code Playgroud) 我试图使用LINQ Name从我的数据库中选择一堆对象使用EF.问题是我收到一个错误:
已经有一个与此命令关联的打开DataReader,必须先关闭它.
Project是包含有关该项目的信息的Type.它是名称类的导航属性.我的LINQ查询导致此错误有什么问题.
var allNames = from n in _db.DCENames
orderby n.BrandName ascending
select n;
foreach (Name name in allNames)
{
NameDbModel data = new NameDbModel();
data.id = name.Id;
data.BrandName = name.BrandName;
data.MarkType = name.Project.MarkType;
data.DateAdded = name.DateAdded;
data.PrimarySector = name.Project.PrimarySector;
data.ProjectName = name.Project.ProjectName;
data.Status = name.Project.ProjectStatus;
data.ProjectId = name.Project.ProjectId;
data.Notes = "";
model.Add(data);
}
Run Code Online (Sandbox Code Playgroud) 我有一个名为MyItems的实体表,该表中的每个项都有一个到另一个表的外键.我想简单地遍历我的项目并访问每个项目的外键对象的字符串'Name'属性,如下所示:
foreach (var myItem in (from q in context.MyItems select q))
{
string testName = myItem.ForeignItem.Name
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,ForeignItem为null,当我尝试访问ForeignItem时,我得到一个InvalidOperationException:
已经有一个与此命令关联的打开DataReader,必须先关闭它.
但是 - 如果我这样调用ToList():
(from q in context.MyItems select q).ToList()
Run Code Online (Sandbox Code Playgroud)
我的外键对象填充得很好.我意识到ToList()会很昂贵,因为整个表将立即被检索.我怀疑在延迟加载的幕后出现了问题,但我正在理解它应该在没有调用的情况下工作ToList().
我忽略了什么吗?
编辑:我在想也许是因为使用var导致了问题,所以我尝试使用
foreach (MyItem myItem in (from q in context.MyItems select q))
{
// loop contents
}
Run Code Online (Sandbox Code Playgroud)
相反 - 相同的结果.myItem除了保留为null的外键对象外,将填充属性.
编辑#2:我只在整个应用程序中使用一个对象上下文和一个Linq-to-Entities语句,因此我无法解释其他DataReader的运行位置.我还应该注意,这个错误发生在循环中的第一个对象,所以它不是因为前一个项被检索.
c# ×3
asp.net ×2
asp.net-core ×1
asp.net-mvc ×1
json.net ×1
lazy-loading ×1
linq ×1
mysql ×1
sql ×1
transactions ×1