小编Adi*_*ter的帖子

LinqDataSource引发System.Data.Linq.Mapping.DataAttribute未定义错误

我在VB.net中使用一个ASP.net网站项目,并向其中添加了LINQ到SQL数据类,以便使用许多LinqDataSource控件。昨天我的项目运行良好,但昨晚关闭并于今天早上启动后,我现在收到此错误:

编译错误描述:在编译为满足此请求所需的资源期间发生错误。请查看以下特定的错误详细信息,并适当地修改您的源代码。

编译器错误消息:BC30002:类型'System.Data.Linq.Mapping.DatabaseAttribute'未定义。

源错误:

<Global.System.Data.Linq.Mapping.DatabaseAttribute(Name:="xxxx_pcf")>  _
Partial Public Class PCFDataContext
    Inherits System.Data.Linq.DataContext
Run Code Online (Sandbox Code Playgroud)

该文件由Visual Studio 2010自动生成,但不会引发任何错误。我只在运行时得到错误。

互联网上的其他地方,人们建议删除命名空间声明,只有我没有。

我在这里还发现有人说System.Data.Linqweb.config文件中可能缺少对该引用的引用。不过,对我而言,我的web.config没问题。

同样在这里,有一个关于VS由于多元化原因重命名类的警告-再次对我无效。

所以我被困住了。

linq vb.net linqdatasource

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

更改avalon编辑中的默认行高

我正在使用avalon编辑编写一个自定义软件,我正在寻找一种方法来使线之间的空间(高度)更大.目前,每当用户结束写一行并想要写另一行时,我就被迫添加一个空行.

我已经开始研究TextView似乎计算defaultLineHeight 的类,但我唯一能够影响的是视觉插入符号的高度,而不是内容本身.

目前我正在考虑使每一对线都看不见但我希望有一种更简单的方法来实现在线之间添加更多空间的简单操作.

这是TextView我正在检查的类的方法.欢迎任何提示或提示.

void CalculateDefaultTextMetrics()
{
    if (defaultTextMetricsValid)
    {
        return;
    }

    defaultTextMetricsValid = true;
    if (formatter != null)
    {
        var textRunProperties = CreateGlobalTextRunProperties();
        using (
            var line = formatter.FormatLine(
                new SimpleTextSource("x", textRunProperties),
                0,
                32000,
                new VisualLineTextParagraphProperties { defaultTextRunProperties = textRunProperties },
                null))
        {
            wideSpaceWidth = Math.Max(1, line.WidthIncludingTrailingWhitespace);
            defaultBaseline = Math.Max(1, line.Baseline);
            defaultLineHeight = Math.Max(1, line.Height);
        }
    }
    else
    {
        wideSpaceWidth = FontSize / 2;
        defaultBaseline = FontSize;
        **defaultLineHeight = FontSize + 3; // bigger …
Run Code Online (Sandbox Code Playgroud)

c# avalonedit

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

我有什么理由在使用.NET Compact Framework时调用Dispose()

我最近接管了使用.NET紧凑框架为移动设备编写的代码库的责任,我看到代码Dispose()遍布整个地方.

这似乎是在

  • ADO.NET db命令
  • Windows窗体

我以为垃圾收集器会处理内存管理.我知道他们可能会在没有内存的情况下暂停一下Dispose(),但这些电话有多大优势或好处?它似乎污染了代码的整洁.

.net dispose compact-framework

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

WPF:绑定到我的自定义控件不会更新

我创建了一个用户控件来“浏览”文件,它基本上由一个文本框和一个按钮组成。

它有几个属性,允许我选择一个目录、一个现有的(打开文件对话框)或一个不存在的文件(保存文件对话框)、指定过滤器、...

我正在使用这样的依赖属性:

    public static readonly DependencyProperty FilePathProperty = DependencyProperty.Register(
        "FilePath",
        typeof(String),
        typeof(BrowseFileControl),
        new PropertyMetadata(default(String), InvokeFilePathChanged)
    );
    public String FilePath { get { return (String)GetValue(FilePathProperty); } set { SetValue(FilePathProperty, value); } }

    private static void InvokeFilePathChanged(DependencyObject property, DependencyPropertyChangedEventArgs args)
    {
        BrowseFileControl view = (BrowseFileControl)property;
        view.InvokeFilePathChanged((String)args.OldValue, (String)args.NewValue);
    }
    protected virtual void InvokeFilePathChanged(String oldValue, String newValue)
    {
        InvokePropertyChanged("FilePath");
    }
Run Code Online (Sandbox Code Playgroud)

在我看来,我有一个列表框,允许我选择要编辑的“配置”,并且我的所有字段(包括我的用户控件)都绑定到 CurrentConfiguration(并且 CurrentConfiguration 绑定到 SelectedItem)。

我的问题:第一次加载总是可以的,但如果我选择其他配置,它只是不会更新并保留旧文本。

我的绑定是这样的:

<userContols:BrowseFileControl  Grid.Row="4" Grid.Column="1" 
    Margin="2" FilePath="{Binding CurrentConfiguration.TagListFile, 
    ValidatesOnDataErrors=true, NotifyOnValidationError=true}"
    IsFolder="False" Filter="All files (*.*)|*.*" CanBeInexistantFile="False"/>
Run Code Online (Sandbox Code Playgroud)

如果我使用一个简单的文本框,具有完全相同的绑定,它会正确更新!

<TextBox Grid.Row="4" …
Run Code Online (Sandbox Code Playgroud)

data-binding wpf binding user-controls dependency-properties

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

.Net 4.5中事件的标记扩展

WPF没有定义用于事件的标记扩展,第三方能够创建可以与事件一起使用的标记扩展.现在,WPF 4.5支持事件的标记扩展.任何人都可以通过优雅的例子帮助如何在.Net 4.5中实现这一目标吗?

wpf events markup-extensions .net-4.5 wpf-4.5

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

SQL Server:加载数据库文件

我正在使用SQL Server 2008.我应该能够"连接"到用户指定的数据库文件(mdf)(使用连接字符串的AttachDbFilename部分)并保存所选文件的副本.我还必须处理数据库的内容.

如果我做对了,一个mdf文件代表一个包含表,存储过程等的完整数据库.但是,如果我在不同文件夹中有两个同名文件(一个在SQL Server的DATA文件夹中,另一个在C :)的根,我尝试在C下加载文件:我收到一条错误,指出已存在具有该名称的数据库.

我在C:下重命名了该文件,但现在我收到一个错误:

"尝试打开或创建物理文件'C:/myDatabaseFile_log.ldf'时,CREATE FILE遇到操作系统错误5(无法检索此错误的文本.原因:15105).无法打开新数据库'C:/MYDATABASEFILE.MDF '.CREATE DATABASE被中止.尝试为文件'C:/myDatabaseFile.mdf'附加一个自动命名的数据库失败.存在一个同名的数据库或指定的文件无法打开,或者它位于UNC共享上."

请注意:我正在尝试打开数据库而不是尝试创建它.
那么我做错了什么?我误解了什么吗?这些数据库文件如何工作(我的意思是,如何使用它们)?

sql-server sql-server-2008

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

扩展Int以实现c#中的接口

是否有可能在C#中(我认为不是)扩展int实现接口(不创建包装类)?

我有这样的界面

public interface IActionLoggerObject
{
    string GetForLogging();
}
Run Code Online (Sandbox Code Playgroud)

我想(概念上)能够做到这一点:

public class int:IActionLoggerObject
{
    string IActionLoggerObject.GetForLogging() { return "s"; }
}
Run Code Online (Sandbox Code Playgroud)

c#

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

.net为什么无法从int []转换为object []

我有以下方法

private void AM(object[] x)
{
}
Run Code Online (Sandbox Code Playgroud)

当我们这样称呼时:

int[] x = new int[1];
AM(x);
Run Code Online (Sandbox Code Playgroud)

我们得到一个编译错误,比如"无效参数","无法从int []转换为object []".

但是,如果我们有一个参数(对象y),我们可以将输入int作为输入参数.

我的问题是:为什么微软以不同的方式设计它们?

.net boxing object

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

传递键/值匿名对象作为参数

在mvc我可以使用这样的结构

@Html.TextAreaFor(model => model.iEventSummary, new { @class = "test" })
Run Code Online (Sandbox Code Playgroud)

我试图将其重现new { @class = "test" }为参数但未成功

testFunction( new {key1="value1", key2="value2", key3="" })

public static string testFunction(dynamic dict)
{
    string ret = string.Empty;
    IDictionary<string, string> dictionary = dict;
    foreach (var item in dictionary)
    {
        ret += item.Key + item.Value;
    }
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

如何声明方法变量?如果我想传递new {key1="value1", key2="value2", key3="" }参数.

c# model-view-controller .net-4.0

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

ComboBox在值c#中加倍

我有以下代码:

private void nameTextBox_Leave(object sender, EventArgs e)
{                  
    var names = ConfigurationManager.AppSettings.AllKeys
                        .Where(k => k.StartsWith("name"))
                        .ToArray();

    // Add names to combobox
    comboBox.Items.AddRange(names);
}
Run Code Online (Sandbox Code Playgroud)

问题是每次我Tab从文本框按下,comboBox元素继续加倍.如果有Ken,John,Tim在那里,如果我再次按Tab键,它会显示两次.

我尝试在上面的名称中使用distinct,但是每次创建新的瞬时时都不会执行任何操作,并保存上一个.添加名称后,我无法将comboBox设置为空,因为它在代码中单击后面的按钮时使用.

我认为唯一的替代方法是声明一个全局变量,并确保其值为0,然后只在comboBox中插入值,并在插入值后将其更改为1.但这似乎不是一个好的编码实践.

有没有更好的方法来完成这项工作?

c# combobox

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