Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MVC中,如何映射回实际的sql表列名,而不是模型?_C#_Entity Framework - Fatal编程技术网

C# 在MVC中,如何映射回实际的sql表列名,而不是模型?

C# 在MVC中,如何映射回实际的sql表列名,而不是模型?,c#,entity-framework,C#,Entity Framework,我正在将我的表列名映射到中的通用方式,以便在模型中使用它们。 比如: Iif如果我知道FirstName字段已使用model在页面上修改,则需要知道sql表中的列名为“First_name” 不管怎么说,我们都要采取行动 感谢阅读映射 我以前也看到过类似的问题,还有一些不太令人满意的解决方案,它们是基于拆分由DbSet生成的SQL字符串。访问映射元数据的尝试被不可访问的内部类型阻止。这些信息如此隐秘,一直困扰着我。无论如何,这是你自己的映射 所以我做了一些鬼混,看看这里是否有改进的地方。因为所有

我正在将我的表列名映射到中的通用方式,以便在模型中使用它们。 比如:

Iif如果我知道FirstName字段已使用model在页面上修改,则需要知道sql表中的列名为“First_name”

不管怎么说,我们都要采取行动

感谢阅读映射 我以前也看到过类似的问题,还有一些不太令人满意的解决方案,它们是基于拆分由
DbSet
生成的SQL字符串。访问映射元数据的尝试被不可访问的内部类型阻止。这些信息如此隐秘,一直困扰着我。无论如何,这是你自己的映射

所以我做了一些鬼混,看看这里是否有改进的地方。因为所有内容都可以从edmx文件中轻松读取,所以我从这里开始。终于到了那里。如果使用以下代码,edmx文件位于名为
doc
XDocument
中。我将在下面解释代码

var xn = XName.Get("Mappings", doc.Root.GetDefaultNamespace().ToString());
var mappingsNode = doc.Descendants(xn).Descendants().First();
var mappingDoc = XDocument.Parse(mappingsNode.ToString());
xn = XName.Get("MappingFragment", mappingDoc.Root
                                            .GetDefaultNamespace().ToString());
var mappings = mappingDoc
            .Descendants(xn)
            .Select(x => new
                {
                    Entity = x.Attribute("StoreEntitySet").Value,
                    Mapping = x.Descendants()
                                .Select(d => new 
                                            { 
                                              Property = d.Attribute("Name")
                                                          .Value,
                                              Column = d.Attribute("ColumnName")
                                                        .Value
                                            })
                });
来自非常小的edmx的样本输出:

实体属性列
---------------------------------------------
类别CategoryID CategoryID
名称类别名称
描述
产品ID产品ID
名称产品名称
QuantityPerUnit QuantityPerUnit
单价
开始日期开始日期
说明: edmx文件有一个固定的结构,我总结如下:


...
...
.

读取映射 我以前也看到过类似的问题,还有一些不太令人满意的解决方案,它们是基于拆分由
DbSet
生成的SQL字符串。访问映射元数据的尝试被不可访问的内部类型阻止。这些信息如此隐秘,一直困扰着我。无论如何,这是你自己的映射

所以我做了一些鬼混,看看这里是否有改进的地方。因为所有内容都可以从edmx文件中轻松读取,所以我从这里开始。终于到了那里。如果使用以下代码,edmx文件位于名为
doc
XDocument
中。我将在下面解释代码

var xn = XName.Get("Mappings", doc.Root.GetDefaultNamespace().ToString());
var mappingsNode = doc.Descendants(xn).Descendants().First();
var mappingDoc = XDocument.Parse(mappingsNode.ToString());
xn = XName.Get("MappingFragment", mappingDoc.Root
                                            .GetDefaultNamespace().ToString());
var mappings = mappingDoc
            .Descendants(xn)
            .Select(x => new
                {
                    Entity = x.Attribute("StoreEntitySet").Value,
                    Mapping = x.Descendants()
                                .Select(d => new 
                                            { 
                                              Property = d.Attribute("Name")
                                                          .Value,
                                              Column = d.Attribute("ColumnName")
                                                        .Value
                                            })
                });
来自非常小的edmx的样本输出:

实体属性列
---------------------------------------------
类别CategoryID CategoryID
名称类别名称
描述
产品ID产品ID
名称产品名称
QuantityPerUnit QuantityPerUnit
单价
开始日期开始日期
说明: edmx文件有一个固定的结构,我总结如下:


...
...
.

读取映射 我以前也看到过类似的问题,还有一些不太令人满意的解决方案,它们是基于拆分由
DbSet
生成的SQL字符串。访问映射元数据的尝试被不可访问的内部类型阻止。这些信息如此隐秘,一直困扰着我。无论如何,这是你自己的映射

所以我做了一些鬼混,看看这里是否有改进的地方。因为所有内容都可以从edmx文件中轻松读取,所以我从这里开始。终于到了那里。如果使用以下代码,edmx文件位于名为
doc
XDocument
中。我将在下面解释代码

var xn = XName.Get("Mappings", doc.Root.GetDefaultNamespace().ToString());
var mappingsNode = doc.Descendants(xn).Descendants().First();
var mappingDoc = XDocument.Parse(mappingsNode.ToString());
xn = XName.Get("MappingFragment", mappingDoc.Root
                                            .GetDefaultNamespace().ToString());
var mappings = mappingDoc
            .Descendants(xn)
            .Select(x => new
                {
                    Entity = x.Attribute("StoreEntitySet").Value,
                    Mapping = x.Descendants()
                                .Select(d => new 
                                            { 
                                              Property = d.Attribute("Name")
                                                          .Value,
                                              Column = d.Attribute("ColumnName")
                                                        .Value
                                            })
                });
来自非常小的edmx的样本输出:

实体属性列
---------------------------------------------
类别CategoryID CategoryID
名称类别名称
描述
产品ID产品ID
名称产品名称
QuantityPerUnit QuantityPerUnit
单价
开始日期开始日期
说明: edmx文件有一个固定的结构,我总结如下:


...
...
.

读取映射 我以前也看到过类似的问题,还有一些不太令人满意的解决方案,它们是基于拆分由
DbSet
生成的SQL字符串。访问映射元数据的尝试被不可访问的内部类型阻止。这些信息如此隐秘,一直困扰着我。无论如何,这是你自己的映射

所以我做了一些鬼混,看看这里是否有改进的地方。因为所有内容都可以从edmx文件中轻松读取,所以我从这里开始。终于到了那里。如果使用以下代码,edmx文件位于名为
doc
XDocument
中。我将在下面解释代码

var xn = XName.Get("Mappings", doc.Root.GetDefaultNamespace().ToString());
var mappingsNode = doc.Descendants(xn).Descendants().First();
var mappingDoc = XDocument.Parse(mappingsNode.ToString());
xn = XName.Get("MappingFragment", mappingDoc.Root
                                            .GetDefaultNamespace().ToString());
var mappings = mappingDoc
            .Descendants(xn)
            .Select(x => new
                {
                    Entity = x.Attribute("StoreEntitySet").Value,
                    Mapping = x.Descendants()
                                .Select(d => new 
                                            { 
                                              Property = d.Attribute("Name")
                                                          .Value,
                                              Column = d.Attribute("ColumnName")
                                                        .Value
                                            })
                });
来自非常小的edmx的样本输出:

实体属性列
---------------------------------------------
类别CategoryID CategoryID
名称类别名称
描述
产品ID产品ID
名称产品名称
QuantityPerUnit QuantityPerUnit
单价
开始日期开始日期
说明: edmx文件有一个固定的结构,我总结如下:


...
...

.

在处理另一个问题时,我找到了一个更好的方法来实现这一点。我想这不是夏娃