小编Els*_*nov的帖子

如何使用 Dapper.Contrib 正确“单一化”表名?

我有一个 .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)

c# dapper .net-core dapper-contrib

5
推荐指数
2
解决办法
900
查看次数

Blazor InputSelect 中显示第一个选项,但值为 null

我在 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)

我该如何处理这个问题?它在从数据库获取数据之前是否将值绑定到模型?

asp.net-core blazor

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

如何在 Blazor 中将 AuthorizeView 标记与自定义身份验证逻辑结合使用

我在 Blazor 服务器应用程序中有一个自定义身份验证系统,具有自定义数据库和一些逻辑。

我希望受益于 razor 中内置的 AuthorizeView 标签。但我不知道如何在没有 AspNetCore.Identity 的情况下使用它。

现在我有一个全局属性 bool IsAuthorized 来检查用户是否登录。最重要的是,我想也许我可以将 IsAuthorized 属性绑定到 AuthorizeView 标签 Authorize 和 NotAuthorized。

我通读了 AuthorizeView 参考,但找不到哪个属性控制它的状态。

是否可以在自定义身份验证逻辑中使用 AuthorizeView,而无需内置“身份”?

blazor blazor-server-side

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

如何从 Sveltekit 版本 v1.0.0-next.287 中的端点获取数据

昨天我将 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)

svelte sveltekit

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

SvelteKit:如何通过别名(如 $routes)从组件和端点引用 /routes 文件夹?

接下来是我的(简化的)项目结构:

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)

我究竟做错了什么?

svelte sveltekit

2
推荐指数
2
解决办法
7531
查看次数

初始化对象与new和没有new之间有什么区别

这两个代码有什么区别:

MyClass a = new MyClass();
a = "something"
Run Code Online (Sandbox Code Playgroud)

MyClass a = "something";
Run Code Online (Sandbox Code Playgroud)

在第一个代码中,它创建了MyClass对象的新副本.但是当不使用新关键字时会发生什么?它会影响初始类(MyClass)吗?

.net c#

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

如何将 JSON 文件读入指定值的字符串并使用 System.Text.Json?

我有一个带有 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>>

c# json .net-core system.text.json

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

Dapper 无法正确映射使用 LEFT JOIN (splitOn) 选择的行

我有两个模型供应商和用户。每个用户可能只有一个供应商,也可能没有。供应商可能有多个用户。

楷模:

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)

.net c# dapper .net-core

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