我有一个 .Net Core 3.1 控制台应用程序。
在SQL Server数据库中,我的表是单数的,和我的POCO类一样,方便匹配和维护。
对于插入、更新和删除操作,我想使用Dapper.Contrib库。但是当我在生成的 SQL 查询中运行插入函数 Dapper 时,将表名复数化。
SQL 表“学生”:
CREATE TABLE Student
StudentId int NOT NULL PRIMARY KEY,
FirstName varchar(50),
LastName varchar(50)
Run Code Online (Sandbox Code Playgroud)
C# 代码
public class Student
{
public int StudentId {get; set;}
public string FirstName {get; set;}
public string LastName {get; set;}
}
class Program
{
static void Main(string[] args)
{
var students = new List<Student>()
{
new Student { StudentId = 1, FirstName = "John", LastName = "Doe"},
new Student { …Run Code Online (Sandbox Code Playgroud) 我在 Razor 组件中遇到了 InputSelect 元素的奇怪行为。在我的输入表单上,我有几个与模型(合作伙伴)绑定的字段。我以下拉选择的形式放置了其中一些字段。因为绑定字段的 (PartnerCategory) 值是 id(整数),所以我从数据库中获取一个查找表,其名称与所选 id 相对应。
在页面上,我可以看到下拉列表中的所有名称。但是,当我尝试将记录从表单插入数据库时,它会引发 SQL 异常,因为 InputSelect 将列表中的第一个值视为 NULL。需要明确的是 - 下拉列表中没有空白值,并且显示所有名称。它只是将其值设为 NULL。因为数据类型是整数,所以它会将 NULL 转换为零。由于我的表中没有为零的 id,因此插入命令失败。
下面是我的简化代码
<EditForm Model="@partner">
<InputSelect @bind-Value="partner.PartnerCategoryId">
@if (categoryList != null)
{
@foreach (var item in categoryList.OrderBy(x => x.PartnerCategoryId))
{
<option value="@item.PartnerCategoryId">@item.Name</option>
}
}
</InputSelect>
</EditForm>
@code {
Partner partner = new Partner();
private IEnumerable<PartnerCategory> categoryList;
protected override async Task OnInitializedAsync()
{
categoryList = await CategoryService.GetAllAsync();
}
}
Run Code Online (Sandbox Code Playgroud)
我该如何处理这个问题?它在从数据库获取数据之前是否将值绑定到模型?
我在 Blazor 服务器应用程序中有一个自定义身份验证系统,具有自定义数据库和一些逻辑。
我希望受益于 razor 中内置的 AuthorizeView 标签。但我不知道如何在没有 AspNetCore.Identity 的情况下使用它。
现在我有一个全局属性 bool IsAuthorized 来检查用户是否登录。最重要的是,我想也许我可以将 IsAuthorized 属性绑定到 AuthorizeView 标签 Authorize 和 NotAuthorized。
我通读了 AuthorizeView 参考,但找不到哪个属性控制它的状态。
是否可以在自定义身份验证逻辑中使用 AuthorizeView,而无需内置“身份”?
昨天我将 SvelteKit 版本从 v1.0.0-next.241 更新到 v1.0.0-next.287,因为我无法获取组件中的数据。我收到一条错误消息:Unexpected token < in JSON atposition 0。当我尝试解析响应时发生错误:await response.json()
自版本 241 以来,关于获取数据有什么变化吗?而现在该怎么做呢?
索引.svelte
<script>
import { session } from '$app/stores';
import { onMount } from 'svelte';
onMount(async () => {
const response = await fetch('/content', {
method: 'POST',
body: JSON.stringify({
user_id: $session.user.id
}),
headers: {
'Content-Type': 'application/json'
}
});
const data = await response.json(); // error occurs on this line
});
</script>
Run Code Online (Sandbox Code Playgroud)
索引.js
export async function post({ request }) {
const data = await request.json(); …Run Code Online (Sandbox Code Playgroud) 接下来是我的(简化的)项目结构:
appname
|
|__src
| |__lib
| |__routes
|
|__jsconfig.json
Run Code Online (Sandbox Code Playgroud)
在 jsconfig.js 文件中,我有一个路径键,其别名为 $lib 形式的“./src/lib”文件夹。
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"$lib": ["src/lib"],
"$lib/*": ["src/lib/*"],
}
},
"include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"]
}
Run Code Online (Sandbox Code Playgroud)
我想以与 $lib 相同的方式使用 $routes 别名访问路由文件夹。但是如果我在上面的 JSON 文件中添加 "$routes": ["src/routes"],sveltekit 无法解析以开头的路径'$routes/somefile'
例子:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"$lib": ["src/lib"],
"$lib/*": ["src/lib/*"],
"$routes": ["src/routes"],
"$routes/*": ["src/routes/*"],
}
},
"include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"]
}
Run Code Online (Sandbox Code Playgroud)
端点.js
import { db } from '$routes/db';
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
这两个代码有什么区别:
MyClass a = new MyClass();
a = "something"
Run Code Online (Sandbox Code Playgroud)
和
MyClass a = "something";
Run Code Online (Sandbox Code Playgroud)
在第一个代码中,它创建了MyClass对象的新副本.但是当不使用新关键字时会发生什么?它会影响初始类(MyClass)吗?
我有一个带有 SQL Server 连接的 .Net Core 3.1 控制台应用程序(不是 ASP.NET Core),其中连接字符串存储在 appsettings.json 文件中
{"ConnectionStrings": { "DefaultConnection":"Server=sqlserver;Database=appDb;User=username;Password=password;" }}
Run Code Online (Sandbox Code Playgroud)
以前我使用 Json.Net 读取字符串
var connString = JObject.Parse(File.ReadAllText("appsettings.json")).GetValue("ConnectionStrings").SelectToken("DefaultConnection").ToString()
Run Code Online (Sandbox Code Playgroud)
它工作正常。现在我决定切换到 System.Text.Json 库并遇到动态反序列化问题。以下代码抛出异常:
var dict = JsonSerializer.Deserialize<Dictionary<string, string[]>>("appsettings.json");
Run Code Online (Sandbox Code Playgroud)
System.Text.Json.JsonException: ''a' 是一个无效的值开始。路径:$ | 行号:0 | BytePositionInLine: 0.' 内部异常 JsonReaderException: 'a' 是一个无效的值开始。行号:0 | 字节位置内联:0。
然后我会从指定 Where Key == "ConnectionStrings" 的字典中读取,然后是字符串数组的后续 Value == "DefaultConnection"。我还没有达到那个点,因为一个异常,所以我还没有计划如何从字典中读取。
如何使用新的 System.Text.Json 库从 appsettings.json 文件中读取连接字符串?反序列化为 是否正确Dictianory<string, string[]>?还是使用会更好Dictianory<string, Dictianory<string, string>>?
我有两个模型供应商和用户。每个用户可能只有一个供应商,也可能没有。供应商可能有多个用户。
楷模:
public class AppUser
{
public int Id { get; set; }
public string? FullName { get; set; }
public string? Position { get; set; }
public int StatusId { get; set; }
public int VendorId { get; set; }
}
public class Vendor
{
public int VendorId { get; set; }
public string? VendorCode { get; set; }
public string? VendorName { get; set; }
public int StatusId { get; set; }
public List<AppUser> CompanyUsers { get; set; …Run Code Online (Sandbox Code Playgroud)