小编Ran*_*ndy的帖子

为什么我需要在SaveChanges之前更改绑定源位置

我有一个小型的WinForms演示应用程序.其中一个表格是我的添加新人表格.我使用了详细信息视图而不是DataGridView我的数据源.当我输入数据并单击导航器上的保存按钮时,没有任何更改,但是我在表单中放置了一个MovePrevious和一个MoveNext后,一切都按预期工作.AddNewLoad

public partial class AddPersonForm : Form
{
    private readonly DemoContext _context;

    public AddPersonForm()
    {
        _context = new DemoContext();
        InitializeComponent();
    }

    protected override void OnLoad(EventArgs e)
    {
        _context.People.Load();

        personBindingSource.DataSource = _context.People.Local.ToBindingList();

        personBindingSource.AddNew();
        personBindingSource.MovePrevious();
        personBindingSource.MoveNext();

        base.OnLoad(e);
    }

    private void personBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {
        int changes = _context.SaveChanges();
        Debug.WriteLine("# of changes: " + changes);
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我需要在识别更改并保存之前切换BindingSource位置?

c# entity-framework bindingsource winforms

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

如何阻止任何按钮单击事件排队,直到事件句柄完成第一次调用

我想阻止按钮点击排队.在测试中,我有一个Form,一个Button,在Code-Behind中我有事件处理程序:

    private void button1_Click(object sender, EventArgs e)
    {
        if (_codeRunning)
            return;

        _codeRunning = true;

        //Application.DoEvents();

        //button1.Enabled = false;

        _click ++;

        Debug.WriteLine("Click Number: " + _click);

        Task.Delay(5000).Wait();

        //button1.Enabled = true;

        _codeRunning = false;
    }
Run Code Online (Sandbox Code Playgroud)

当我运行调试并快速单击按钮两次或三次或四次时,"调试输出"会在最后一次显示后大约五秒钟显示每次单击.我希望它显示的是单击并删除其余部分,直到第一个事件完成.

我还尝试禁用该按钮,以及暂时从Button_click事件中删除Handler.结果都是一样的.

c# event-handling winforms

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

如何级联 SoftDelete?

在检查这些 SO 文章后:cascade-delete-in-entity-frameworkef6-1-soft-delete-with-cascade-deletecascading-soft-deletemethod-for-cascading-soft-deletes-in-parent-子关系级联软删除的原因,但没有找到解决方案......

我让 SoftDelete 为我的实体模型工作。我SaveChanges()在我的上下文中覆盖了:

    public override int SaveChanges()
    {
        ChangeTracker.DetectChanges();

        foreach (DbEntityEntry<ISoftDeletable> entity in ChangeTracker.Entries<ISoftDeletable>())
        {
            if (entity.State == EntityState.Deleted)
            {
                entity.State = EntityState.Modified;
                entity.Entity.IsDeleted = true;
            }
        }
        return base.SaveChanges();
    }
Run Code Online (Sandbox Code Playgroud)

我已经为我的子实体设置了 CascadeOnDelete。因为我覆盖了删除的EntityState它不会级联。有人知道只将导航属性放入foreach循环中的方法吗?还是处理 SoftDeletes 的更好方法?

先感谢您,

c# soft-delete entity-framework-6

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

如何调试仅在发布模式下崩溃的Android应用程序

一切都在调试模式下工作,但在发布模式下崩溃.调试模式中哪些必需权限在发布模式下未打开?

编辑

当我将链接设置为无时,我通过第一个屏幕进入我的登录屏幕.但是,当我添加了Release权限时Internet,它第一次尝试读取远程实体框架核心表时崩溃了.

编辑2

在发布模式下,如果我检查Use Shared Runtime,该应用程序运行正常.

编辑3

我暂时在Release模式下启用了Debugging.以下行仅在发布模式下抛出System.TypeInitializationException:

if (_context.bma_users.Any(p => p.username == _name.Text) && _name.Text != string.Empty)
Run Code Online (Sandbox Code Playgroud)

android xamarin entity-framework-core android-8.1-oreo

5
推荐指数
3
解决办法
1625
查看次数

为什么我的 Asp.Net Core 日志中收到“不支持 POST 请求”?

我有一个 ASP.NET Core 5 API 设置。我还有一些使用静态内容的 Razor 页面。我正在使用 JWT 进行身份验证。在我的文件中,UserController我有一个操作存根,我正在其中开发更改密码操作:

    [Authorize]
    [HttpPost("ChangePassword")]
    public IActionResult ChangePassword([FromBody] string password)
    {
        HttpContext.Items.TryGetValue("User", out var user);

        _logger.ForContext<UsersController>().Debug("User {EmailAddress} tried to change his password to {Password}.", ((User)user).EmailAddress, password);

        return Ok();
    }
Run Code Online (Sandbox Code Playgroud)

这可以通过 Swagger 测试并记录。我还有其他 POST 操作。这是我第一次尝试让用户使用HttpContext.

然而,只有通过这个新操作,我才会在日志中收到两个条目:

2021年7月23日21:36:24.612 不支持POST请求
2021年7月23日21:36:24.605 不支持POST请求

日志 (Seq) 显示SourceContextMicrosoft.AspNetCore.StaticFiles.StaticFileMiddleware

我想知道为什么我会收到这两个日志条目,我可以安全地忽略它们吗?

c# jwt asp.net-core

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

'收藏品被修改; 枚举操作可能无法执行'使用async/await

我有一个简单的单元测试:

[TestMethod]
public void TestInitDatabases()
{
    Debug.WriteLine("Testing loading up all databases!");

    Assert.IsTrue(Library.InitDatabase());
}
Run Code Online (Sandbox Code Playgroud)

并且ClassLibrary中的方法试图加载具有58,139条记录的实体.

public static bool InitDatabase()
{
    Debug.WriteLine("Loading Entities");

    var startTime = DateTime.Now;

    DContext.Database.CommandTimeout = 180;
    DContext.Database.Log = Console.WriteLine;

    Task task = new Task(async () => await DContext.SA_HistoryHeader.LoadAsync());

    Debug.WriteLine("All Tasks Assigned");

    task.Start();
    task.Wait();
    while (!DContext.SA_HistoryHeader.Local.Any())
    {
        Debug.WriteLine("Task Status " + task.Status);
    }

    try
    {
        Debug.WriteLine("We are about to count the records...");

        while (DContext.SA_HistoryHeader.Local.Count != 58139)
        {
            Debug.WriteLine("OrderHistory has " + DContext.SA_HistoryHeader.Local.Count + " Records");
        }
    }
    catch (Exception …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework enumeration async-await

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

如何对"A","B","AA","AB"和"AAA"等版本号进行排序?

参考此问题:如何仅获取最新的发票编号

我接受了使用MAX函数的答案,但Robert McKee指出将导致排序值,例如:

‘A’
‘AA’
‘AAA’
‘AB’
‘B’

当我需要的是:

‘A’
‘B’
‘AA’
‘AB’
‘AAA’

我正试图找到一种方法来查找最新版本的发票.引用问题中接受的答案将起到一定作用.它确实满足了我的问题......但现在一个新问题值得回答自己的问题,而不是让我回去修改我原来的问题.所以…

我唯一需要处理的是发票编号本身.发票编号的格式为##### XXX,其中#####是实际的发票编号,XXX是版本编号.XXX可以是从'A'到'ZZZ'的任何地方.

这是我尝试找到一个合理的工作(一个SQL测试用例):

DECLARE @TempTable TABLE (MyNumber int, MyString varchar(15));

INSERT @TempTable
VALUES (100, 'A'), (100, 'AAZ'), (100, 'B'), (100, 'AZ'), (100, 'C'), (100, 'Z'), (100, 'AA'), (100, 'AB');

SELECT TOP 1
RTRIM(CAST(MyNumber AS NVARCHAR(15)) + MyString) AS InvoiceNumber
FROM @TempTable
ORDER BY RIGHT(LEFT(MyString + SPACE(2), 3), 1) DESC, RIGHT(LEFT(MyString + SPACE(2), 2), 1) DESC, LEFT(MyString, 1) DESC;
Run Code Online (Sandbox Code Playgroud)

有人愿意提供更好的答案或指出我正确的方向来清理我的?

提前致谢,

sql sorting sql-order-by

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

如何将 Autofac 与 Winforms 一起使用来注入依赖项

我正在努力学习Autofac。我找不到 Winforms 的工作示例。在我的program.cs我有这个:

public static IContainer Container { get; private set; }

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
private static void Main()
{
     var builder = new ContainerBuilder();
     builder.Register(c => new MyContext());
     Container = builder.Build();
     ...
     using (var loginForm = new LoginForm(new MyContext()))
     {
         DialogResult results;
         do
         {
             results = loginForm.ShowDialog();
             if (results == DialogResult.Cancel)
                 Environment.Exit(1);
         } while (results != DialogResult.OK);
            
         UserName = loginForm.ValidatedUserName;
     }
}
Run Code Online (Sandbox Code Playgroud)

MyContext()是一个 DbContext。我想注入MyContext()我的 …

c# autofac winforms

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

Why does a Bound Textbox not modify its associated property is the Text value is set programmatically?

I have a Windows Form with a number of Textboxes. I bind them to a DataSource as the Form Loads.

public partial class FormSettings : Form
{
    private readonly DbContext _context = new DbContext();

    public FormSettings()
    {
        InitializeComponent();
    }

    protected override void OnLoad(EventArgs e)
    {
        _context.OrderEntrySettings.Load();

        SettingsBindingSource.DataSource = _context.OrderEntrySettings.Local.ToBindingList();

        Binding saNbinding = new Binding("Text", SettingsBindingSource, "InvoiceNumber");

        InvoiceNumberTextBox.DataBindings.Add(saNbinding);

        Binding pthNbinding = new Binding("Text", SettingsBindingSource, "SalesOrderExportPath");

        PathTextBox.DataBindings.Add(pthNbinding);

    <snip>
    …   
    </snip>
}
Run Code Online (Sandbox Code Playgroud)

One of the Textboxes is bound to a Directory Path (string) …

c# data-binding textbox winforms entity-framework-6

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

如何为动态创建的组合框定义“ref”

我是一名老程序员,但对 javascript 很陌生。我正在开发一个小型电子商务应用程序。我的产品或项目最多有二十个自定义用户定义的属性。例如,“螺钉”类别有两个自定义属性“长度”和“螺纹”。

我为每个活动的自定义属性动态创建一个组合框过滤器。我添加了一个按钮,单击该按钮时需要将所有动态创建的组合框过滤器重置回“任意”。

如果我的组合框是静态定义的,这就是我试图实现的基本思想:

import React from 'react';
import Combobox from "react-widgets/Combobox";

class Sample extends React.Component {
    constructor() {
        super();
        this.combo1 = React.createRef();
        this.combo2 = React.createRef();
    }    

    render() {
        let buttonClick = () => {
            this.combo1.current.value = "Any";
            this.combo2.current.value = "Any";
        }

        return (
            <div>
                <button onClick={() => buttonClick() }>Reset Filters</button>
                <Combobox data={["Any", "1 1/2", "1 1/4"]} ref={this.combo1} />
                <Combobox data={["Any", "Red", "Green", "Blue"]} ref={this.combo2} />
            </div>
        );
    }
}
export default Sample;
Run Code Online (Sandbox Code Playgroud)

如何定义ref动态创建的组合框?

我的组件的相关部分:

...
<p …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

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

没有正确关闭Odbc连接

我有一个简单的测试Windows窗体应用程序.我第一次在VS中运行它一切正常.如果我再次立即运行它会在adapter.fill(ds)上抛出有关读保护内存的异常; 线.如果我等待5分钟左右,应用程序将再次运行.我想从stackoverflow社区获得一些关于我被愚弄的建议.我想这是一些连接超时.代码如下:

C#

    public void Button1_Click(object sender, EventArgs e)
    {
        string connectionString = @"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=x:\CMSBak\ISP;";

        var conn = new OdbcConnection(connectionString);

        conn.Open(); // Open the connection

        string strQuery = "SELECT * FROM ISPINMAS";

        var adapter = new OdbcDataAdapter(strQuery, conn);

        var ds = new DataSet();

        try
        {
            adapter.Fill(ds);
        }
        catch (Exception)
        {
            conn.Close();
            throw;
        }

        DataTable dt = ds.Tables[0];

        dataGridView1.DataSource = dt.DefaultView;

        conn.Close(); // That's it, now close the connection
    }
Run Code Online (Sandbox Code Playgroud)

c# odbc dbase

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

将ref关键字与引用类型参数一起使用有什么好处?

作为开发人员,如果不更改引用所指向的参数类型参数,则使用ref关键字将该参数传递给方法,我会获得什么

我已经读过两个,带有引用类型参数的ref关键字C#中引用类型变量的"ref"有什么用?和其他一些人.我知道这个问题已经被问过很多次了.我相信我在问一个独特的问题.如果你认识其他的wize,请随时记下我的问题.

简单的课程:

public class Person
{
    public Person(string first, string last)
    {
        FirstName = first;
        LastName = last;
    }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public override string ToString()
    {
        return string.Format("{0} {1}", FirstName, LastName);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用关键字'ref'传递表单:

public partial class Form2 : Form
{
    private Person _person;

    public Form2()
    {
        _person = new Person("John", "Doe");
        InitializeComponent();
    }

    protected override void …
Run Code Online (Sandbox Code Playgroud)

c# reference ref

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

我如何连接str和int ptr

我需要一个char*我的文件名.它应该是这样的:cards/h11.bmp

我有一个函数,我从各种SO文章拼凑而成:

char* getFileName(int* pc1_no, char* suite)
{
    int number;
    char pCard1[80];
    strcpy_s(pCard1, "cards/");
    strcat_s(pCard1, suite);
    number = *pc1_no;
    cout << number << endl;
    string str = to_string(number);
    char const *pchar = str.c_str();
    strcat_s(pCard1, pchar);
    strcat_s(pCard1, ".bmp");

    return pCard1;
}
Run Code Online (Sandbox Code Playgroud)

当然,返回垃圾.我没有得到指针值.我很确定我用指针犯了一个愚蠢的错误.提前致谢.

c++

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