问题列表 - 第2922页

NHibernate映射与类层次结构,其基类是抽象的,鉴别器不是字符串

以下是域模型类:

public abstract class BaseClass
{
...
}

public class ChildClass : BaseClass
{
...
}
Run Code Online (Sandbox Code Playgroud)

请注意,父类是抽象的,这就是在使用流畅的nhibernate进行映射时给我带来一些困难的原因.我的鉴别器是一个字节(数据库中的tinyint).因为它不是一个字符串,我不能管理设置在基类中的鉴别值,这并不工作(从映射类BaseClass的拍摄):

DiscriminateSubClassesOnColumn<byte>("Type")
    .SubClass<ChildClass>()
    .IsIdentifiedBy((byte)OperationType.Plan)
    .MapSubClassColumns(p => { ... })
Run Code Online (Sandbox Code Playgroud)

我得到的错误信息是:

类初始化方法UnitTest1.MyClassInitialize引发异常.NHibernate.MappingException:NHibernate.MappingException:无法格式鉴别价值实体的BaseClass的SQL字符串---> System.FormatException:输入字符串的不正确的格式..

以下帖子似乎解释了会发生什么.他们给使用XML的解决方案,但不与功能NHibernate:http://forum.hibernate.org/viewtopic.php?t=974225

谢谢您的帮助.

c# nhibernate domain-driven-design nhibernate-mapping fluent-nhibernate

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

是否可以在MS Entity Framework中查询新添加的对象

有没有办法在Entity Framework中查询或只访问新添加的对象(使用ObjectContext.AddObject方法)?我的意思是当它尚未使用SaveChanges保存到数据存储时

我知道查询被转换为底层SQL并针对数据存储执行,并且它还没有这个新对象.但无论如何,我很好奇 - 如果它没有得到支持,也许它在理论上是可能的.如果不是,开发商如何处理它?手动跟踪新对象并使用Linq查询对象?

同样的问题也适用于LinqToSql.

.net c# orm persistence entity-framework

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

YouTube播放器的FF3/Windows CSS z-index问题

我坚持看似与YouTube播放器的CSS/z索引冲突.在Windows XP下的Firefox 3中,请查看此页面:http://spokenword.org/program/21396单击"收集"按钮,并注意弹出的<div>显示 YouTube播放器下方.在其他浏览器上,<div>显示在顶部.它的z-index值为999999.我尝试将包含播放器的<object>元素的z-index设置为较低的值,但这不起作用.知道如何让弹出窗口出现在播放器上吗?

css youtube flash firefox z-index

43
推荐指数
3
解决办法
4万
查看次数

C中的通用列表操作函数?

什么是C中的通用列表操作函数?(当我浏览一些材料时,我看到了这一点.)

这个函数和一个可以接受任何元素的函数有什么区别?

它们一样......?如果它们不相同,我们如何单独实施它们?

c generics arguments function list

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

MySQL的替代品

我想为我的应用程序持久存储数据,但我真的不需要一个完整的关系数据库.我真的可以使用一个基本的"缓存"式持久存储,其中结构只是一个(键,值)对.

代替数据库什么是我最好的,可扩展的选项?

database memcached caching scalability

7
推荐指数
3
解决办法
7642
查看次数

什么是C中的前向参考?

C中关于指针的前向引用是什么?

我能举个例子吗?

c pointers forward-reference

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

覆盖子类中的字段或属性

我有一个抽象基类,我想声明一个字段或属性,在每个继承自此父类的类中具有不同的值.

我想在基类中定义它,所以我可以在基类方法中引用它 - 例如重写ToString来说"这个对象是属性/字段类型".我有三种方法可以看到这样做,但我想知道 - 这样做的最佳或可接受的方式是什么?新手问题,抱歉.

选项1:
使用抽象属性并在继承的类上覆盖它.这得益于强制执行(你必须覆盖它)并且它是干净的.但是,返回硬代码值而不是封装字段感觉有点不对,而且它只是几行代码而不仅仅是.我还必须为"集合"声明一个主体,但这不太重要(并且可能有一种方法可以避免我不知道的情况).

abstract class Father
{
    abstract public int MyInt { get; set;}
}

class Son : Father
{
    public override int MyInt
    {
        get { return 1; }
        set { }
    }
}
Run Code Online (Sandbox Code Playgroud)

选项2
我可以声明一个公共字段(或受保护的字段),并在继承的类中显式覆盖它.下面的例子会给我一个使用"new"的警告,我可能会这样做,但它感觉不对,它打破了多态性,这是重点.看起来不是一个好主意......

abstract class Mother
{
    public int MyInt = 0;
}

class Daughter : Mother
{
    public int MyInt = 1;
}
Run Code Online (Sandbox Code Playgroud)

选项3
我可以使用受保护的字段并在构造函数中设置值.这看起来很整洁,但依赖于我确保构造函数始终设置这个并且使用多个重载构造函数总是有可能某些代码路径不会设置该值.

abstract class Aunt
{
    protected int MyInt;
}

class Niece : Aunt
{ …
Run Code Online (Sandbox Code Playgroud)

c# field properties

137
推荐指数
5
解决办法
15万
查看次数

GridView中的多个DataKeyNames

我有一个从ObjectDataSource填充的GridView,其DataKeyNames字段中有两个项目.一个是主键,ID,另一个是类别字段(类别字段用于添加标题行以描述类别).

显示工作正常,但我正在尝试创建删除操作.对象的delete方法只需要ID字段和ObjectDataSource,即使我将方法定义为只需要一个ID字段,.net也会抱怨,因为它正在寻找一个同时具有DataKeyNames中定义的字段的方法.

如果我将类别的参数添加到delete方法,它可以工作,但是定义一个不用于任何东西的参数很烦人.

我可以将ObjectDataSource和GridView对象配置为具有DataKeyNames的两个值,但具体应该传递给哪些方法?

这两个对象的(简化)定义是:

<asp:ObjectDataSource ID="ObjDS1" runat="server" SelectMethod="getAllItems" 
    TypeName="Items" DeleteMethod="deleteItem">
    <DeleteParameters>
        <asp:Parameter Name="ID" Type="Int32" />
       <!-- This shouldn't be necessary: -->
        <asp:Parameter Name="Category" Type="String" />
    </DeleteParameters>
</asp:ObjectDataSource>

<asp:GridView ID="gvJItems" runat="server" AutoGenerateColumns="False" DataKeyNames="ID,Category" 
    DataSourceID="ObjDS1">
        <Columns>
            <asp:BoundField DataField="ID" Visible="false"  HeaderText="ID" />
            <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="85%"/>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:LinkButton ID="lbDelete" Runat="server" 
                        OnClientClick="return confirm('Are you sure you want to delete this?');"
                            CommandName="Delete">Delete</asp:LinkButton>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
Run Code Online (Sandbox Code Playgroud)

asp.net gridview

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

如何创建自己的Windows XP键盘映射?

我的父亲已经找到了俄语键盘映射,他真的很喜欢这里.但是,它是非标准的,因此不会出现在语言(控制面板 - >区域和语言选项 - >语言 - >详细信息 - >文本服务和输入语言 - >添加)下拉列表中,用于键盘布局选择.根据我的理解,创建新映射应该是一项简单的任务 - 可能是编辑XML文件和重新启动.有谁知道如何做到这一点?

除此之外,我将如何编写程序来模拟这个?看起来它必须在系统托盘中运行(我可以想出来),有一个钩子拦截传入的键盘输入(不知道如何做到这一点),将其转换为配置文件,并将其发送到任何应用程序和文本窗口有当前焦点(再次,不知道).运气好的话,这不应该太难.

有什么建议?

windows-xp

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

确定运行时的类型并将其应用于泛型类型 - 我该怎么做?

我想创建一个强类型列表并在运行时决定类型.这是我的代码.我认为它应该工作,但它没有:)

        Type elementType = Type.GetType(parts[0].Trim(),false,true);
        var elementsBeingSet = new List<elementType>();
Run Code Online (Sandbox Code Playgroud)

你有什么想法如何创建一个强类型列表,其类型我将在运行时决定?

重复:这是其他版本:

c# types

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