我制作了一个 WPF 和控制台应用程序,供某人在我无法访问的私人服务器上使用。我使用 Visual Studio 2019 的内置“发布向导”来创建依赖于框架的单文件应用程序。当这个人打开 WPF 应用程序时,他们收到了标准警告:
他们点击是,据我所知,他们安装了 .Net Core 3.1,这是应用程序的目标。
重新启动计算机后,他们再次收到完全相同的警告。我不确定发生了什么,所以我将应用程序重新打包为独立的,因为安装的 .Net Core 版本与我的应用程序的目标相同。
这似乎有点奏效。我们遇到了一些不相关的问题,我不得不在代码中修复这些问题,然后我重新发布了项目并将它们发送出去。
他们尝试使用 WPF 应用程序并再次收到安装警告。
现在无论我在“发布向导”中选择什么选项组合,他们都会收到警告。
我不知道该怎么做。
这是我的发布设置的图片
我正在尝试更新实体,但我遇到了以下错误:
InvalidOperationException:无法跟踪实体类型"BookLoan"的实例,因为已经跟踪了具有相同键的此类型的另一个实例.添加新实体时,对于大多数键类型,如果未设置任何键,则将创建唯一的临时键值(即,如果为键属性指定了其类型的默认值).如果要为新实体显式设置键值,请确保它们不会与现有实体或为其他新实体生成的临时值发生冲突.附加现有实体时,请确保只有一个具有给定键值的实体实例附加到上下文.
我已经做了一些研究,从我可以告诉我,我显然试图跟踪已经跟踪的实体,_context.Update(bookloan);但我不知道该怎么做.
我要做的是更新我的数据库中的现有实体/记录.这里是get和post控制器,因为我不确定还有什么可以分享.
得到
[HttpGet]
public async Task<IActionResult> Return(int? id)
{
if (id == null)
{
return NotFound();
}
if (isBookCheckedOut(id) == false)
{
//Not checked out
return RedirectToAction("Index");
}
else
{
var bookloan = (from book in _context.Books.Where(b => b.BookId == id)
join loan in _context.BookLoans.Where(x => !x.ReturnedOn.HasValue) on book.BookId equals loan.BookID into result
from loanWithDefault in result.DefaultIfEmpty()
select new BookReturnViewModel
{
BookLoanID = loanWithDefault.BookLoanID,
BookID = book.BookId,
Title = book.Title,
StudentID = loanWithDefault == null …Run Code Online (Sandbox Code Playgroud) 基本上我想弄清楚的是如何要求在视图中填写两个字段中的至少一个.
在我的视图中,我有两个名为ISBN和ISBN13的文本字段.用户填写哪一个并不重要,只要其中一个填写.
我不确定在这里做什么期望考虑编写一个自定义验证器,所以我想我先问.我会包含一些代码,但由于它只是两个简单的字段,我认为这种解释会更好.