Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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# 为什么NPoco几乎随机忽略列和属性名以及映射?_C#_Petapoco_Micro Orm_Npoco - Fatal编程技术网

C# 为什么NPoco几乎随机忽略列和属性名以及映射?

C# 为什么NPoco几乎随机忽略列和属性名以及映射?,c#,petapoco,micro-orm,npoco,C#,Petapoco,Micro Orm,Npoco,我正在使用NPoco ORM作为PetaPoco的一个分支,但我刚刚注意到它在某些情况下映射了不正确的列 我使用的是存储过程,我的POCO属性名与存储过程生成的列名相同: string sql = "EXEC API_GetVenueSummaryByID @@venueID = @venueID"; var venue = db.FirstOrDefault<VenueSummary>(sql, new { venueID = venueID }); 存储过程是一个简单的SELE

我正在使用NPoco ORM作为PetaPoco的一个分支,但我刚刚注意到它在某些情况下映射了不正确的列

我使用的是存储过程,我的POCO属性名与存储过程生成的列名相同:

string sql = "EXEC API_GetVenueSummaryByID @@venueID = @venueID";
var venue = db.FirstOrDefault<VenueSummary>(sql, new { venueID = venueID });
存储过程是一个简单的SELECT语句,包含两个变量。删除这些变量没有帮助:

DECLARE @hasOffers bit
IF EXISTS(SELECT * FROM Offers WHERE dbo.Offers.EntryType='V' AND Offers.EntryID =   @VenueID AND GETDATE() <= validToDate) SET @hasOffers = 1

SELECT  
    Venue.VenueID, VenueName, Town, County, Country, PackageCode,       
    MeetingRoomsNo, MaxMeetingCapacity, BedroomsNo,
    MetaDescription AS ShortDescription,
    'dummyresult.jpg' AS PrimaryImageFilename,
    @hasOffers AS HasSpecialOffers,
    CAST(TimeStamp AS BIGINT) AS RecordVersion
FROM dbo.Venue
WHERE Venue.VenueID = @VenueID
NPoco中是否有函数导致它猜测映射而忽略它们的名称?如果是这样,我如何禁用它并强制它仅基于列和属性名进行匹配


目前唯一的解决办法似乎是使用column属性,这是一个NPoco和PetaPoco如何缓存用于从SQL语句映射到POCO的codegen的问题

通常情况下,如果在更改SQL时更改代码,则不会出现问题,因为缓存将重建。但是,如果先创建POCO,然后在第一次初始运行后开始更改SP,则映射将不正确

这个问题已经在2.5.83-beta版中修复,现在将查看列名及其位置以确定缓存键


感谢您的帮助@NickG

向我们展示API_GetVenueSummaryByID。@BCdotNET已更新以包含存储过程。我不熟悉NPoco,但我注意到他们有一些。还有。您是否尝试过这些方法?在某些情况下,不正确地映射列是什么意思?如果从SP返回的列与VenueSummmary的属性名具有相同的名称,则不需要在属性名上使用列属性。@CallMeKags,但这正是我要正确映射的操作,否则它几乎会随机映射列。你是对的,它不应该被需要-因此我张贴这个问题。