小编Joh*_*ohn的帖子

更新需要EntityState.Modified吗?

我在更新唱片使用时见过很多人:

...
ms.Status = status;
db.Entry(ms).State = EntityState.Modified;
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

这条线是否需要?没有它,我能够进行更新.

db.Entry(ms).State = EntityState.Modified;
Run Code Online (Sandbox Code Playgroud)

我想知道这个语句实际上用于什么,如果上下文已经知道它应该更新该记录而不明确指定它然后为什么要明确指定它呢?

entity-framework-4

16
推荐指数
1
解决办法
9138
查看次数

IdentityServer4如何访问用户电子邮件

我继承了一个现有的项目,并且我是使用 IdentityServer4 的新手,所以请耐心等待。

我通过 GET 请求获取令牌,如下所示:

http://my-identity-server/account/login?returnUrl=%2Fconnect%2Fauthorize%2Flogin%3Fclient_id%3Dmy.client%26redirect_uri%3Dhttp%253A%252F%252Flocalhost:8100/index.html%26response_type%3Dcode%2520id_token %2520token%26scope%3Dopenid%2520profile%2520MyAPI%26state%3D4bc18eac6a354ab3a6997e1b414e7f80%26nonce%3Dbc377c5bfd784f2f87b2621bd9cfae2

然后,我们尝试使用响应提供的 access_token 作为不记名令牌来检索成员信息。这似乎有效,但这是我坚持的部分:

在 API 内部,以下代码返回代表登录用户的 GUID,而不是电子邮件。

Claim cl = this.User.Claims.FirstOrDefault(x => x.Type == "sub");
Run Code Online (Sandbox Code Playgroud)

我需要更改什么才能允许子提供登录用户的电子邮件?

我尝试将电子邮件或个人资料添加到范围中,如您在上面看到的,该范围仅在我的声明列表中生成名称为“范围”和值“电子邮件”的条目。

编辑

看来我需要在以某种方式生成令牌时更新范围。我在网上看到的所有示例都在内存设置中使用,因为我从数据库获取设置。当我在 API 上调用 userinfo 端点时,我也只能访问“sub”,例如

{
    "sub": "xx"
}
Run Code Online (Sandbox Code Playgroud)

asp.net-core identityserver4

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

EF中多对多连接的最佳实践

实体框架中多对多连接的最佳解决方案是什么.看起来在我们在将表添加到edmx文件后使用EF的一个项目中,它忽略了添加交集实体,即:

有了这些表格

Customer(CustomerId,...)
CustomerOrder(CustomerId,OrderId)
Order(OrderId,...)
Run Code Online (Sandbox Code Playgroud)

CustomerOrder表没有添加到edmx中,因此表格无法与传统的(传统意义,我们在LINQ to SQL中执行它的方式)内连接查询连接,例如

var q = from c in db.Customers
        join co in db.CustomerOrders on c.CustomerId equals co.CustomerId
        join o in db.Orders on co.OrderId equals o.OrderId
        select a;
Run Code Online (Sandbox Code Playgroud)

据我所知,通过查看先前提出的问题,您可以通过在where子句中指定条件来进行多次选择和"连接",或者使用intersects关键字.但我想知道这些情况的最佳做法是什么.

假设我想知道客户有哪些订单,我将如何编写该查询.

c# many-to-many entity-framework-4

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

MVC表单发布未到达控制器

我有一个表单,提交时未到达控制器方法(我在此处放置了一个断点)

    [HttpPost]
    public ActionResult SaveBilling( FormCollection fc )
    {
...
}
Run Code Online (Sandbox Code Playgroud)

前端代码是这样的

<form action="/PersonSettings/SaveBilling" method="post" >
...
<input type='submit' value="save" />
</form>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?

不知道这是否是路由处理程序问题,因为如果我在浏览器中转到/ PersonSettings / SaveBilling,它确实达到了GET版本,但是post方法只会产生一个空白页面,并且不会进入代码

asp.net-mvc-3

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

Orchard 1.6 VS发布问题

从Visual Studio 2010/2012发布果园网站时,它可以在Orchard 1.5.1的发布模式下发布,然后您可以获得一个可移植的~50MB网站.

但是对于Orchard 1.6,它不会复制必要的文件/文件夹,除非你选择调试模式,这有点考虑上传有时~800MB,这是为什么?

我们暂时恢复到1.5.1 ......

visual-studio orchardcms

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