小编Tu *_*ran的帖子

马歇尔阵列结构

我花了很多时间来寻找解决方案,但仍然没有找到它.

我有2个班:

[StructLayout(LayoutKind.Sequential)]
public class Result
{
    public int Number;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
    public string Name;
    public int Size;
}

[StructLayout(LayoutKind.Sequential)]
public class CoverObject
{
    public int NumOfResults;
    [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 4)]
    public Result[] Results;
}
Run Code Online (Sandbox Code Playgroud)

我期望命令Marshal.SizeOf(typeof(CoverObject))将返回52,但不是,它只是20.因此,我后来使用的所有编组和解组都不起作用.

看起来它只计算Result类中的第一个成员(Number).我做错了什么吗?

.net c# structure marshalling

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

为什么EF 5.x对表使用复数名称?

我在ORM框架方面有过一些经验,比如Hibernate,甚至是Entity Framework 3.0.

默认情况下,这些框架对表使用单数名称.例如,类User将映射到表User.

但是当我使用Visual Studio 2012迁移到EF 5.x时,它使用复数名称并导致许多错误,除非我使用TableAttributeas 手动映射该类:

[Table("User")]
public class User {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

没有TableAttribute,如果我有DbContext如下:

public CustomContext : DbContext {
    // ...
    public DbSet<User> Users { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后打电话:

var list = db.Users.ToList();
Run Code Online (Sandbox Code Playgroud)

生成的sql看起来像:

Select [Extent1].[Username] From [Users] as [Extent1]
Run Code Online (Sandbox Code Playgroud)

因此,将发生错误,因为我没有任何名为Users的表.此外,我将单数形式的名称表格称为复数形式.你可以在这个链接中看到原因

我想知道为什么微软以这种方式实现EF 5.x而不是EF 3.0?

更新:

我们可以通过在上下文类中使用此代码告诉EF不使用复数名称:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

    base.OnModelCreating(modelBuilder);
}
Run Code Online (Sandbox Code Playgroud)

即使EF工具生成多个名称,它应该保留到原始数据库的映射,不应该吗?因为某些用户可能想要更改其类中的一些字段名称.EF 3.0运行良好,但EF 5.x没有.

伙计们,请你给我一个理由!

c# entity-framework

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

无法使用alter table添加分区

我的表格结构如下:

CREATE TABLE `child_table` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `value` int,
    `ref_id` int,
    PRIMARY KEY (`id`),
    KEY `ref_id` (`ref_id`),
    CONSTRAINT `FK4E9BF08E940F8C98` FOREIGN KEY (`ref_id`) REFERENCES `parent_table` (`id`) ON DELETE CASCADE
)
Run Code Online (Sandbox Code Playgroud)

运行语句以添加分区时,它会失败并显示错误:

ERROR 1217: Cannot delete or update a parent row: a foreign key constraint fails
SQL Statement:
ALTER TABLE `learning`.`child_table`  PARTITION BY HASH(ref_id) PARTITIONS 10
Run Code Online (Sandbox Code Playgroud)

所以我用parent_table删除外部约束,然后再次运行.它仍然失败并显示相同的错误.

我做错了什么吗?

mysql partitioning foreign-keys alter-table

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

如何查看 xml-comments 生成的完整文档

我写了一个方法,例如:

/// <summary>
/// A method having xml-comments
/// This comment could be very long
/// </summary>
/// <param name="input">Input parameter</param>
/// <returns>Calculated value</returns>
int CommmentedMethod(int input) {
    return Calc(input);
}
Run Code Online (Sandbox Code Playgroud)

但是当我使用这种方法时,Visual Studio(我使用的是 VS 2010)只是显示“具有 xml 注释的方法此注释可能是... ”而不是完整的文档。

有没有可以显示的选项?

更新图片: 在此输入图像描述

谢谢 :-)

c# xml-comments visual-studio

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

如何在Symfony2重定向到登录页面之前获取以前的URL

我配置了如下身份验证:

pattern: ^/secured/*
form_login:
  check_path: _login_check
  login_path: _login #/login
Run Code Online (Sandbox Code Playgroud)

也就是说,当我进入时http://www.example.com/secured/user,它将重定向到http://www.example.com/login没有关于/secured/useruri的任何信息.

我需要知道它以后再使用.那么,我怎么能得到那个uri?

uri login symfony url-redirection

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

Windows Phone 8.1应用程序中的按钮大小不是预期的

我是Windows Phone开发的新手,并尝试通过以下代码将2个按钮放入网格中:

<Grid Margin="10" Height="60">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="50"/>
        <ColumnDefinition Width="50"/>
    </Grid.ColumnDefinitions>
    <Button MinWidth="50" Width="50" Height="60" Grid.Column="0" Background="Red" BorderThickness="0" Content="-"/>
    <Button MinWidth="50" Width="50" Height="60" Grid.Column="1" Background="Green" BorderThickness="0" Content="+"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

但按钮高度不是预期的,它总是小于定义的尺寸,甚至越来越高的高度(见图)

按钮的大小不是预期的

我试图设置填充和边距属性,但它不起作用.还有什么我需要设置的吗?

wpf user-interface xaml windows-phone-8.1

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

在新版本的Visual Studio上使用旧代码

我有一个项目,从C/C++开始于90年代.因此,它包含许多旧的编码风格,如K&R风格的函数声明,过时的函数,...

该项目在Visual Studio 2008中运行良好,但现在我想在新版本的Visual Studio(特别是VS 2010)中使用它,因为我们在Visual Studio 2010/2012中有其他项目.我不想在我的机器上安装太多版本的Visual Studio.

当我尝试编译旧项目时,Visual Studio会抛出太多错误.我可以修复所有这些,但我很害怕编辑源代码,我希望其他人也可以在旧版本的VS中使用它.我希望项目保持向后兼容VS.

我的问题是如何在不更改代码的情况下在Visual Studio 2010/2012中使用旧代码.或者,如果有必要,我如何修复几行代码,但如果其他人在旧版本的VS中打开该代码,请确保它不会导致错误.有没有办法告诉较新的Visual Studio版本使用较旧的编译器标志或类似的东西?

c visual-studio

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

CLR如何通过C#,VB.Net中的方法调用,

我不知道如何解释我的问题,请以示例形式接受:

我用C#语言编写了一个库,其方法如下:

public object GetValueAt(int idx) {
    return arr[idx];
}
Run Code Online (Sandbox Code Playgroud)

然后我在VB.Net中使用它,当然在C#和VB.Net之间有一个不同的索引.因此,如果我调用该方法idx = 6,CLR如何知道我尝试访问的对象(它idx = 5在C#上有)?

这只是我的例子,那么.Net中现有的库怎么样?

.net clr

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