小编Mat*_*ete的帖子

尝试保存更新时,由于相同的主键而附加实体时出错

我正在尝试保存对现有数据库条目的更新,但是当我这样做时,我收到错误:

附加类型为"FFInfo.DAL.Location"的实体失败,因为同一类型的另一个实体已具有相同的主键值.如果图中的任何实体具有冲突的键值,则在使用"附加"方法或将实体的状态设置为"未更改"或"已修改"时,可能会发生这种情况.这可能是因为某些实体是新的并且尚未收到数据库生成的键值.在这种情况下,使用"添加"方法或"已添加"实体状态来跟踪图形,然后根据需要将非新实体的状态设置为"未更改"或"已修改".

这是我的控制器代码.我正在使用的保存方法与我在其他几个方面使用的保存方法相同,可以毫无问题地更新数据.

[HttpPost, ValidateAntiForgeryToken]
public ActionResult EditLocation(AddEditLocationVM model, HttpPostedFileBase MapFile)
{
    try
    {
        using (var db = new GeographyContext())
        {
            model.Sections = new SelectList(db.Sections.Where(s => s.ID > 1).OrderBy(s => s.Title), "ID", "Title").ToList();
            model.GeographyTypes = new SelectList(db.GeographyTypes.Where(gt => gt.SectionID == model.Section).OrderBy(gt => gt.Name), "ID", "Name").ToList();
            model.ParentLocations = new SelectList(db.Locations.Where(l => l.SectionID == model.Section).OrderBy(l => l.Name), "ID", "Name").ToList();


            if (MapFile != null)
            {
                if (FileHelper.IsNotValidImage(MapFile))
                {
                    ModelState.AddModelError("Invaalid File Type", "Images must be JPG, GIF, or PNG files.");
                }
            }

            if (ModelState.IsValid) …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework

7
推荐指数
1
解决办法
2万
查看次数

实体框架7迁移不创建表

我正在使用Entity Framework 7处理我的第一个项目,并且正在连接到已经创建了数据库的SQL Server,但它还没有表.我创建了我的DbContext并创建了一个类,然后DbSet<>在我的上下文中设置了一个.我运行命令以启用迁移并创建第一次迁移,然后使用rand命令更新数据库.一切看起来都很好,没有出现任何错误,但是当我查看数据库时,只EFMigraitonsHistory创建了表.当我查看为初始迁移创建的类时,它基本上是空白的.我究竟做错了什么?

我正在运行的命令:

dnvm install latest -r coreclr
dnx ef migrations add MyFirstMigration
dnx ef database update
Run Code Online (Sandbox Code Playgroud)

语境:

namespace JobSight.DAL
{
    public class JobSightDBContext : DbContext
    {
        public DbSet<NavigationMenu> NavigationMenu { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

表类:

namespace JobSight.DAL
{
    public class NavigationMenu
    {
        [Required, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Int16 ID { get; set; }

        public string ControllerName { get; set; }
        public string ActionName { get; set; }
        public string ExternalURL { get; …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-core asp.net-core

7
推荐指数
1
解决办法
1万
查看次数

每个控制器使用MVC属性路由多个RoutePrefixes?

使用新的MVC属性路由,我知道您可以Route为单个分配多个属性ActionResult,但我正在寻找在该RoutePrefix级别执行相同操作的方法.我有一个控制器,在每个动作中都应该可以通过三种途径访问:

/Games/{Title}/Characters/{Route} /Books/{Title}/Characters/{Route} /Cinema/{Title}/Characters/{Route}

我尝试了三个单独的RoutePrefix属性,但是我得到了错误Deuplace RoutePrefix attribute.如果我尝试使用以逗号分隔的列表,我会得到Best override method for does not contain a constructor that takes 3 arguments.

是否可以设置一个RoutePrefix所需的三个路径我的控制器?

asp.net-routing asp.net-mvc-5

6
推荐指数
1
解决办法
4775
查看次数

突然在SQL Azure上获得大量等待操作超时问题

两天前,没有代码更改或更改数据库,我没有得到很多(每5分钟左右)错误,The wait operation timed out错误有两个不同的下划线完全错误关于预登录和另一个关于帖子:

System.Data.Entity.Core.EntityException:基础提供程序在Open上失败.---> System.Data.SqlClient.SqlException:连接超时已过期.尝试使用登录前握手确认时超时时间已过.这可能是因为登录前握手失败或服务器无法及时响应.尝试连接到此服务器所花费的时间是 - [Pre-Login] initialization = 21; 握手= 14988; ---> System.ComponentModel.Win32Exception:等待操作超时

System.Data.Entity.Core.EntityException:基础提供程序在Open上失败.---> System.Data.SqlClient.SqlException:连接超时已过期.在登录后阶段过去了超时时间.在等待服务器完成登录过程并响应时,连接可能已超时; 或者在尝试创建多个活动连接时可能会超时.尝试连接到路由目标时发生此故障.尝试连接到原始服务器时花费的持续时间是 - [Pre-Login] initialization = 5; 握手= 3098; [登录]初始化= 0; 认证= 0; [登录后]完成= 7; 尝试连接到此服务器所花费的时间是 - [Pre-Login] initialization = 20; 握手= 5; [登录]初始化= 0; 认证= 0; [登录后]完成= 11003;

我正在使用Entity Framework,我的网站托管在Azure Web App上.我已经做了一些挖掘,我发现的大多数SO问题都与实体框架无关,但ADO.Net我找到的几篇帖子让我更新了从DB的基本到标准(S0)服务并创建了一个GlobalDBConfig

public class GlobalDBConfig : DbConfiguration
{
    public GlobalDBConfig()
    {
        SetExecutionStrategy("System.Data.SqlClient", () => new SqlAzureExecutionStrategy(2, TimeSpan.FromSeconds(30)));
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能弄清楚还有什么问题并修复它?这是一个非常简单的数据库,具有简单的查询和很少的网站流量(每天少于1000次访问)

c# entity-framework azure azure-sql-database

6
推荐指数
1
解决办法
3293
查看次数

未处理的预期未被路由到我的自定义错误页面

我的理解是,如果你添加app.UseExceptionHandler();并给它一个ASP.Net应该加载该页面的路径,当有一个错误没有被代码捕获但在我的情况下我仍然得到正常的"Http 500内部服务器错误"页面.我可以采取我给出的路径UseExceptionHandler(),并将其放在我的浏览器中,它加载页面很好,所以我知道路径和页面工作.我想念这是如何工作,它是坏了,还是我做错了什么?

Startup.cs:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    //if (env.IsDevelopment())
    //{
    //    app.UseDeveloperExceptionPage();
    //}

    app.UseExceptionHandler("/Error/ServerError");
    app.UseIISPlatformHandler();
    app.UseSession();
    app.UseStaticFiles();
    app.UseStatusCodePagesWithReExecute("/Error/PageNotFound");
    app.UseMvc();
}
Run Code Online (Sandbox Code Playgroud)

错误页码:

//Get: "/Error/ServerError"
[Route("Error/ServerError")]
public IActionResult ServerError()
{
    return View(); //View is inside the Shared folder.
}
Run Code Online (Sandbox Code Playgroud)

错误页面视图:

<p>
    @ViewData["ErrorMessage"]
</p>
Run Code Online (Sandbox Code Playgroud)

请注意,"找不到页面"错误被路由到/Error/PageNotFound没有问题,只是其他错误没有.

编辑:作为测试,我将字符串从中复制UseStatusCodePagesWithReExecuteUseExceptionHandler但仍然得到通用的500错误页面.

编辑2:我应该注意到我正在以两种方式测试此错误.第一种是通过简单地执行操作throw new DivideByZeroException();,另一种是将LINQ to Entities调用到已脱机的数据库(并因此抛出a SqlException).两种方式都只返回默认值HTTP 500 Internal Server Error而不是我的自定义错误.

asp.net-core-mvc

6
推荐指数
1
解决办法
2034
查看次数

在 ASP.Net/Entity Framework Core 中为远程 SQL 连接字符串指定登录信用

我正在关注https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/new-db以了解如何使用新的 .Net Core 和 Entity Framework Core,我正在尝试创建到远程 SQL Server 的连接字符串。我更新了服务器和数据库字符串,但它没有显示如何指定用户名和密码。我已经做了一些挖掘,但我发现的每个实体框架核心示例都仅适用于 localDB。我如何正确指定登录凭据以及应该Trusted_Connection为远程 SQL Server 2016 服务器设置什么?

sql-server entity-framework-core asp.net-core

6
推荐指数
1
解决办法
1万
查看次数

将 tailwincss 转换为普通 CSS?

我收到了一个使用 tailwindcss 编写的 html 文件,我正在尝试找出如何将所有内容转换为普通 CSS。我找到了一个只执行该类的转换,但这需要我手动从代码中提取数千个类,然后重新粘贴它。是否有一些工具可以让我上传整个 html 文件,然后它会为我生成 CSS 版本,还是我必须手动进行整个转换?我更喜欢在线的东西,因为我不想安装一堆第三方工具,学习那里的系统,进行转换,然后卸载所有东西。

css tailwind-css

6
推荐指数
1
解决办法
5925
查看次数

用于SelectList的System.Web.Mvc与System.Web.WebPages.Html

今天我注意到两个命名空间System.Web.Mvc,并System.Web.WebPages.Html有SelectListItem.它之间有什么区别,有时候你应该使用一个而不是另一个吗?

c# asp.net asp.net-mvc asp.net-webpages asp.net-mvc-5

5
推荐指数
1
解决办法
1464
查看次数

MVC AttributeRoute似乎忽略了RoutePrefix并导致多个控制器错误中的匹配操作

我正在使用MVC属性路由(MVC 5.1.2)并遇到错误:

找到了与URL匹配的多种控制器类型.如果多个控制器上的属性路由与请求的URL匹配,则会发生这种情

请求已找到以下匹配的控制器类型:FFInfo.WebUI.Areas.Admin.Controllers.HomeController FFInfo.WebUI.Areas.Admin.Controllers.SectionController

这种情况只发生在我去的时候/Admin/Sections/,我不确定为什么因为只有一条路线可以匹配该URL,任何人都可以帮我弄清楚出了什么问题?请注意这个问题是5.1.2独有的,MVC 5.0工作正常.

基础控制器:

[RouteArea("Admin")]
public class BaseController : Controller
{
}
Run Code Online (Sandbox Code Playgroud)

家庭控制器:

[RoutePrefix("")]
[Route("{action}")]
public class HomeController : BaseController
{

    public ActionResult Index()
    {
    }

    public ActionResult Updates()
    {
    }

    [ChildActionOnly]
    public PartialViewResult GetUpdatesGrid()
    {
    }


    public ActionResult GetUpdates(JqGridRequest Request)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

部门控制器:

[RoutePrefix("Sections")]
[Route("{action}")]
public class SectionController : BaseController
{
    [Route]
    public ActionResult Sections()
    {
    }

    [ChildActionOnly]
    public PartialViewResult GetSectionsGrid()
    {
    }

    public ActionResult GetSections(JqGridRequest Request)
    {
    }

    public ActionResult AddSection() …
Run Code Online (Sandbox Code Playgroud)

attributerouting asp.net-mvc-5

5
推荐指数
1
解决办法
3917
查看次数

将GUID与LINQ中的字符串进行比较会导致错误

编辑,这不是重复.建议的SO链接要我打电话,ToString()但我正在运行.COUNT()并试图做一个大于比较,所以呼叫ToString()不是一个正确的答案.

我试图使用IF快捷方式填充变量,但是当我运行它时,我得到了错误

LINQ to Entities无法识别方法'System.Guid Parse(System.String)'方法,并且此方法无法转换为存储表达式.

我正在运行的代码是

IsAdmin = (db.yaf_prov_RoleMembership
             .Where(rm => rm.UserID == UserKey
                          && rm.RoleID == Guid.Parse("adsfasd654asdf816asdf"))
             .Count() > 0) ? true : false;
Run Code Online (Sandbox Code Playgroud)

如果我带走Guid.Parse并进行直接比较,那么我得到了错误

Operator ==不能应用于System.Guid和String类型的操作数

为了将GUID与LINQ查询中的字符串进行比较,需要做些什么?

c# linq

5
推荐指数
1
解决办法
1万
查看次数