小编Dab*_*rnl的帖子

如何在数据库中存储数组?

我有一个简单的消息系统,到目前为止使用基于文件的存储.由于系统用户数逐渐增加,我想切换到基于数据库的存储.

在代码中,消息服务器维护用户列表(带有凭据)和消息列表.Message对象的主要字段是Sender(User类型),Recipients(类型为User [])和Content(类型为string).
通常,用户将从服务器请求发送给他的消息,并接收其中"收件人"字段包含其自己的用户名的所有消息.

因此,对于数据库,我设想了以下表:
-A Users表
-A Messages表
( - 每个用户的表,指定由MessageID发送给他的消息)?

我遇到的问题是如何存储收件人字段(其中包含一个数组),以便数据库查询可以搜索请求接收发送给他的邮件的用户.我没有比为在系统上注册的每个新用户动态创建表更好的解决方案,该系统保存对作为收件人列出的消息的引用.其他方法可能吗?

非常感谢!

.net sql database-design

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

是否有一个常量描述.Net中的最小Windows FileTime值?

我使用DateTime.ToFileTime和FromFileTime方法来存储和检索数据库中的时间戳.最小的Windows文件时间是1601年1月1日午夜.是否存在类似于DateTime.MinValue的常量,它描述了这个值?

.net datetime constants

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

请向我解释一下这个SerializationException

下面的简单类继承自HashSet,因此必须实现ISerialization成员(以非标准方式).当我尝试序列化然后反序列化Group的实例时,我得到以下异常:

测试方法UtilitiesTests.GroupTest.SerializeTest抛出异常:System.Reflection.TargetInvocationException:Het doel van een aanroep heeft een uitzondering veroorzaakt.---> System.Runtime.Serialization.SerializationException:Lid nameprop是niet gevonden ..

不幸的是,这是荷兰语.这意味着无法找到成员"nameprop"!怎么了??

using System;
using System.Collections.Generic;
using System.Runtime.Serialization;

namespace Grouping
{
    [Serializable]
    public class Group<T> : HashSet<T>
    {
        public Group(string name)
        {
            Name = name;
        }

        protected Group(){}

        protected Group(SerializationInfo info, StreamingContext context):base(info,context)
        {
            Name = info.GetString("nameprop");
        }

        protected new void GetObjectData(SerializationInfo info,StreamingContext context)
        {
            base.GetObjectData(info,context);
            info.AddValue("nameprop", Name);
        }

        public string Name { get; private set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# serialization

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

如何将WPF控件绑定到后面的代码?

我有这个XAML:

<Window x:Class="WpfBindToCodeBehind.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300"
    Loaded="Window_Loaded">
    <StackPanel Orientation="Vertical">
        <Button Name="ToggleExpand" Click="ToggleExpand_Click">Toggle Expander</Button>
        <Expander Name="Expander"
                  Header="Don't click me, click the button!"
                  IsExpanded="{Binding RelativeSource={RelativeSource Self},Path=MayExpand}">
            <TextBlock Text="{Binding}"/>
        </Expander>
    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

这是背后的代码:

public partial class Window1 : Window,INotifyPropertyChanged 
    {
        public event PropertyChangedEventHandler PropertyChanged;

        public Window1()
        {
            InitializeComponent();
        }

        private void ToggleExpand_Click(object sender, RoutedEventArgs e)
        {
            MayExpand = !mayExpand;
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Expander.DataContext = "Show me";
        }

        private bool mayExpand;
        public bool MayExpand
        {
            get { …
Run Code Online (Sandbox Code Playgroud)

data-binding wpf code-behind

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

使用哪个调度程序?窗口或控件的?

到目前为止,当我想从非UI线程更新UI控件时,我使用了如下语法:

Dispatcher.Invoke(DispatcherPriority.Normal,
                  new Action(()=>Label1.Content="New Content"));
Run Code Online (Sandbox Code Playgroud)

现在我正在阅读更多关于它的信息我一直在寻找以下语法:

Label1.Dispatcher.Invoke(//same arguments;
Run Code Online (Sandbox Code Playgroud)

后者更好吗?为什么我会选择一种方法而不是另一种?

.net wpf multithreading dispatcher

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

将Access 97文本字段的默认值设置为空字符串

使用DAO和VB6我尝试将访问97文本字段的默认值设置为空字符串(而不是Null),因此:

Dim newField as DAO.Field
Set newField = myTablelDef.CreateField("NewField", dbText, 10)
newField.DefaultValue=""
Run Code Online (Sandbox Code Playgroud)

但是,这被解释为Null,并且未指定NewField的新记录将Null作为其值而不是空字符串.如果我将值更改为"默认",则会在新记录中反映出来,因此代码本身是正确的.我知道可以将一个空字符串而不是Null分配给Text字段,那么它是如何完成的呢?

vb6 ms-access dao

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

模式克服了Entity Framework中缺少ConflictMode.ContinueOnConflict的实现?

Linq To SQL DataContext有一个重载,SubmitChanges它允许在抛出Optimistic Concurrency Exception时继续更新,并为开发人员提供一种机制,以便在一个Try Catch块中解决之后的冲突.

甚至它的方法也WCFDataServicesContext有一个SaveChangedOptions.ContinueOnError参数,它 SaveChanges至少允许你在发生错误时继续更新并且保留未解决的冲突更新,以便你以后可以查看它们.

(1)为什么ObjectContext.SaveChanges方法没有这样的选择?

(2)是否存在任何会模仿Linq To SQL行为的更新模式?我在MSDN上找到的示例使得看起来好像一个Try Catch块会在多次更新的情况下看到你回家.但是这种模式不允许您单独调查每个冲突的更新:它只是提醒您第一次冲突,然后为您提供"在一次扫描中擦除表清理"的选项,以防止任何进一步的乐观并发异常浮出水面,知道是否存在以及您希望如何处理它们.

batch-processing optimistic-concurrency entity-framework-4

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

复合键字段的最佳顺序是什么?

假设我有一个包含以下字段的表:

  • LeagueID
  • MatchID
  • 一些数据

联盟将举办许多比赛.通常每个联盟都将使用自己的本地数据库,因此LeagueID字段在此本地数据库的所有记录中都是相同的.联盟每年一次将其数据上传到国家当局,然后联盟ID将有必要对具有相同MatchID的比赛进行识别.

实现复合主键的最佳方法是什么(使用EF Fluent API)?

Entity<Match>.HasKey(match=>new {match.LeagueID,match.MatchID})
Run Code Online (Sandbox Code Playgroud)

要么

Entity<Match>.HasKey(match=>new {match.MatchID,match.LeagueID})
Run Code Online (Sandbox Code Playgroud)

对于人眼来说,联盟 - 比赛的顺序是合乎逻辑的,因为它将把特定联盟的比赛保持在一起.但我明白,在编写复合键时,出于性能原因首先使用最具辨别力的字段非常重要.

database-design entity-framework composite-key entity-framework-5

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

有没有办法使用 Dapper 的一些 .Insert 扩展方法将属性映射到列名?

我在这门课上遇到了以下挑战:

Public Class MyClass
    Property Id As Integer
    Property LastName as String
End Class
Run Code Online (Sandbox Code Playgroud)

数据库中对应的数据表有如下字段: Id (int, not null) Last-Name (nvarchar(80),null)

所以我需要映射MyClass.LastNameMyClasses.Last-Name并度过一段地狱般的时光......

当我编写自定义插入查询时,一切正常,但我想使用 Dapper 扩展包之一的 .Insert 语句。

我尝试过 Dapper.Contrib,但这会忽略我使用 Dapper.FluentMap 或使用 Dapper 本身的内置方法创建的映射Dapper.SetTypeMap

我尝试了 Dapper.FastCrud,但我无法弄清楚如何为其配置映射,尽管这个 API 看起来很有前途。

任何人?

dapper dapper-extensions dapper-fastcrud dapper-contrib

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

IIS6中托管的WCF服务中的默认目录?

我编写了一个接受和存储消息的简单WCF服务.它在本地托管时工作正常.我仍然在IIS 6上托管时工作.但是当我启用服务将消息存储到xml的能力时,我收到以下错误:访问c:\ windows\system32\inetsrv\Onno.xml已被拒绝(从荷兰语翻译,所以可能不匹配真正的英文错误消息).这很奇怪,因为服务没有从提到的目录运行.而且,文件onno.xml不存在.该服务应该创建它

xelement.Save("onno.xml");
Run Code Online (Sandbox Code Playgroud)

什么时候

File.Exists("onno.xml")==false
Run Code Online (Sandbox Code Playgroud)

怎么了?

  • 我是否必须为IIS托管的WCF服务中的文件IO操作指定默认目录?
  • 我必须调整权限吗?

编辑:我尝试使用MapPath函数实现Mehrdad的解决方案:

   public void Persist(Message message)
    {
        foreach (var recipient in message.Recipients)//recipient is a string
        {
            XElement xml_messages;
            string path;
            try
            {
                path = HttpContext.Current.Server.MapPath("~/"+recipient+FileExtension);
                //FileExtension=".xml"
                //Null reference exception thrown from this line
            }
            catch (Exception e)
            {
                throw new Exception("Trying to get path " + e.Message);
            }
            try
            {
                xml_messages = XElement.Load(path);
            }
            catch
            {
                xml_messages = XElement.Parse("<nothing/>");
            }
            var element = (XElement) message;
            if (xml_messages.IsEmpty)
            {
                xml_messages =
                    new XElement("messages", …
Run Code Online (Sandbox Code Playgroud)

.net c# iis file-io wcf

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

虽然按下Enter按钮,但在表单关闭之前用于捕获控件状态更改的事件?VB6!

我想在用户从中选择一个值时存储ComboBox的ListIndex的更改值.我尝试使用_Change或_LostFocus事件,但是当窗体的"关闭"按钮的Default属性设置为true并且用户按下enter时,不会触发这些事件!

有没有解决的办法?

vb6

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

并肩显现,炙手可热还是失宠?

最近我们的客户遇到了一些 .dll 地狱问题,所以我想知道 SxS 安装所需的 .dll 和 .ocx 是否是一个好主意。我读到了它,并成功部署了我们的应用程序,至少它的一些依赖项是通过清单满足的,但它仍然是推荐的部署方式,还是过去几年的一种时尚,现在逐渐被放弃?

vb6 deployment sxs

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

如何以编程方式将键盘焦点设置为UserControl内的文本框?

我有一个包含文本框的UserControl.我想在用户单击按钮时以编程方式将keyboardfocus设置为此文本框.我试过这个:

private void Button_Click(object sender,EventArgs e)
{
  Keyboard.Focus(MyUserControl);
}
Run Code Online (Sandbox Code Playgroud)

没运气.然后我通过TextBox类型的属性在UserControl中公开了Textbox

private void Button_Click(object sender,EventArgs e)
{
  Keyboard.Focus(MyUserControl.TextBox);
}
Run Code Online (Sandbox Code Playgroud)

再没有运气.最后,我在UserControl中创建了一个eventhandler来处理GotKeyboardFocus事件,在其中的文本框上调用Keyboard.Focus方法.

再没有运气?!

这该怎么做??

编辑:问题与UserControls无关.当您尝试将焦点传递给Click或MouseDownHandler中的其他UIElement时,这是一个问题.下面的XAML代码讲述了他们自己的故事:焦点确实传递到文本框但被列表框窃取.

<Window x:Class="FocusSpike.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <StackPanel>
        <TextBox Name="FocusedTextBox" Height="30">
            <TextBox.Style>
                <Style TargetType="TextBox">
                    <Setter Property="Text" Value="I am unfocused..."/>
                    <Setter Property="Opacity" Value=".3"/>
                    <Style.Triggers>
                        <Trigger Property="IsKeyboardFocused" Value="True">
                            <Trigger.EnterActions>
                                <BeginStoryboard>
                                    <Storyboard AutoReverse="True">
                                        <DoubleAnimation Storyboard.TargetProperty="FontSize" To="20"/>
                                    </Storyboard>
                                </BeginStoryboard>
                            </Trigger.EnterActions>
                            <Setter Property="Text" Value="I am focused!"/>
                            <Setter Property="Opacity" Value="1"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </TextBox.Style>
        </TextBox>
        <Button>Click to steal focus.</Button>
        <ListBox>
            <ListBoxItem GotFocus="Listbox_GotFocus">
                <Label MouseDown="ListBoxItem_MouseDown"> …
Run Code Online (Sandbox Code Playgroud)

.net wpf focus

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