实体框架主键约定。如何在名称中允许包含“id”的更多列?

时间:2015-10-06 12:17:48

标签: asp.net-mvc entity-framework

我正在现有数据库上开发一个Web应用程序,遗憾的是我无法更改。 我收到此错误

  

“使用不区分大小写的搜索时,会为属性'Id'找到多个属性映射。”

经过一番搜索后,我发现问题在于EF中有一些约定,更具体地说是一个约定(根据我读到的here):

  

如果字段名称包含ID后缀(不区分大小写),则EF会自动将其作为主键包含

该表已有一个主键(名为“id”)。 有没有办法禁用EF约定或以任何其他方式允许除了我的'id'字段之外,还有一个名为“something_id”的字段而不会出现此错误?

1 个答案:

答案 0 :(得分:-1)

这是如何禁用EF的id约定:

在OnModelCreating

  ShapeDrawable.ShaderFactory shaderFactory = new ShapeDrawable.ShaderFactory() {
        @Override
        public Shader resize(int width, int height) {
            LinearGradient linearGradient = new LinearGradient(0, 0, width, height,
                    new int[]{
                            0xF44336,
                            0xFFB74D,
                            0xFFE082,
                            0xAED581,
                            0x4CAF50,
                            0xAED581,
                            0xFFE082,
                            0xFFB74D,
                            0xF44336},
                    new float[]{
                            0, 0.125f, 0.25f, 0.375f, 0.5f, 0.625f, 0.75f, 0.875f, 1.0f},
                    Shader.TileMode.REPEAT);
            return linearGradient;
        }
    };
    PaintDrawable paint = new PaintDrawable();
    paint.setShape(new RectShape());
    paint.setShaderFactory(shaderFactory);