replaced FastReflection.dll with Fasterflect.dll to fix the race condition.
This commit is contained in:
parent
a0560da33d
commit
bdcdc7c0f6
Binary file not shown.
|
@ -10,7 +10,7 @@
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>Marr.Data</RootNamespace>
|
<RootNamespace>Marr.Data</RootNamespace>
|
||||||
<AssemblyName>Marr.Data</AssemblyName>
|
<AssemblyName>Marr.Data</AssemblyName>
|
||||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<SccProjectName>SAK</SccProjectName>
|
<SccProjectName>SAK</SccProjectName>
|
||||||
<SccLocalPath>SAK</SccLocalPath>
|
<SccLocalPath>SAK</SccLocalPath>
|
||||||
|
@ -21,6 +21,8 @@
|
||||||
<OldToolsVersion>3.5</OldToolsVersion>
|
<OldToolsVersion>3.5</OldToolsVersion>
|
||||||
<UpgradeBackupLocation />
|
<UpgradeBackupLocation />
|
||||||
<TargetFrameworkProfile />
|
<TargetFrameworkProfile />
|
||||||
|
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
|
||||||
|
<RestorePackages>true</RestorePackages>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
@ -40,8 +42,9 @@
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="FastReflection">
|
<Reference Include="Fasterflect, Version=2.1.3.0, Culture=neutral, PublicKeyToken=38d18473284c1ca7, processorArchitecture=MSIL">
|
||||||
<HintPath>..\Libraries\FastReflection\FastReflection.dll</HintPath>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\packages\fasterflect.2.1.3\lib\net40\Fasterflect.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core">
|
<Reference Include="System.Core">
|
||||||
|
@ -137,13 +140,7 @@
|
||||||
<Compile Include="SqlModesEnum.cs" />
|
<Compile Include="SqlModesEnum.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="NuGet\Tools\" />
|
<None Include="packages.config" />
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Content Include="NuGet\NuGet.exe" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="NuGet\marrdatamapper.nuspec" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
@ -154,6 +151,7 @@
|
||||||
<PreBuildEvent>
|
<PreBuildEvent>
|
||||||
</PreBuildEvent>
|
</PreBuildEvent>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
|
|
Binary file not shown.
|
@ -1,20 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
||||||
<metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
|
||||||
<id>MarrDataMapper</id>
|
|
||||||
<version>
|
|
||||||
3.17.4747.34302
|
|
||||||
</version>
|
|
||||||
<authors>Jordan Marr</authors>
|
|
||||||
<requireLicenseAcceptance>true</requireLicenseAcceptance>
|
|
||||||
<description>Marr Data Mapper is a Linq enabled ORM that allows you to project views into complex object graphs. Contributors: Rick Schott, vitidev.</description>
|
|
||||||
<language>en-US</language>
|
|
||||||
<projectUrl>http://marrdatamapper.codeplex.com/</projectUrl>
|
|
||||||
<licenseUrl>http://marrdatamapper.codeplex.com/license</licenseUrl>
|
|
||||||
<tags>ORM data mapper fluent linq sql relational database DAL entity</tags>
|
|
||||||
</metadata>
|
|
||||||
<files>
|
|
||||||
<file src="bin\Release\*.dll" target="lib" />
|
|
||||||
</files>
|
|
||||||
</package>
|
|
||||||
|
|
|
@ -1,20 +1,11 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using FastReflection;
|
using Fasterflect;
|
||||||
|
|
||||||
namespace Marr.Data.Reflection
|
namespace Marr.Data.Reflection
|
||||||
{
|
{
|
||||||
public class CachedReflectionStrategy : IReflectionStrategy
|
public class CachedReflectionStrategy : IReflectionStrategy
|
||||||
{
|
{
|
||||||
private FastReflection.CachedReflector _reflector;
|
|
||||||
|
|
||||||
public CachedReflectionStrategy()
|
|
||||||
{
|
|
||||||
_reflector = new CachedReflector();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sets an entity field value by name to the passed in 'val'.
|
/// Sets an entity field value by name to the passed in 'val'.
|
||||||
|
@ -29,24 +20,27 @@ namespace Marr.Data.Reflection
|
||||||
if (val == DBNull.Value)
|
if (val == DBNull.Value)
|
||||||
{
|
{
|
||||||
if (member.MemberType == MemberTypes.Field)
|
if (member.MemberType == MemberTypes.Field)
|
||||||
_reflector.SetValue(member, entity, ReflectionHelper.GetDefaultValue((member as FieldInfo).FieldType));
|
{
|
||||||
|
entity.SetFieldValue(member.Name, ReflectionHelper.GetDefaultValue(((FieldInfo)member).FieldType));
|
||||||
|
}
|
||||||
else if (member.MemberType == MemberTypes.Property)
|
else if (member.MemberType == MemberTypes.Property)
|
||||||
{
|
{
|
||||||
var pi = (member as PropertyInfo);
|
var pi = (PropertyInfo)member;
|
||||||
if (pi.CanWrite)
|
if (pi.CanWrite)
|
||||||
_reflector.SetValue(member, entity, ReflectionHelper.GetDefaultValue((member as PropertyInfo).PropertyType));
|
{
|
||||||
|
entity.SetPropertyValue(member.Name, ReflectionHelper.GetDefaultValue(((PropertyInfo)member).PropertyType));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (member.MemberType == MemberTypes.Field)
|
if (member.MemberType == MemberTypes.Field)
|
||||||
_reflector.SetValue(member, entity, val);
|
|
||||||
else if (member.MemberType == MemberTypes.Property)
|
|
||||||
{
|
{
|
||||||
var pi = (member as PropertyInfo);
|
entity.SetFieldValue(member.Name, val);
|
||||||
if (pi.CanWrite)
|
}
|
||||||
_reflector.SetValue(member, entity, val);
|
else if (member.MemberType == MemberTypes.Property && ((PropertyInfo)member).CanWrite)
|
||||||
|
{
|
||||||
|
member.Set(entity, val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,12 +60,12 @@ namespace Marr.Data.Reflection
|
||||||
|
|
||||||
if (member.MemberType == MemberTypes.Field)
|
if (member.MemberType == MemberTypes.Field)
|
||||||
{
|
{
|
||||||
return _reflector.GetValue(member, entity);
|
return entity.GetFieldValue(member.Name);
|
||||||
}
|
}
|
||||||
else if (member.MemberType == MemberTypes.Property)
|
|
||||||
|
if (member.MemberType == MemberTypes.Property && ((PropertyInfo)member).CanRead)
|
||||||
{
|
{
|
||||||
if ((member as PropertyInfo).CanRead)
|
return entity.GetPropertyValue(member.Name);
|
||||||
return _reflector.GetValue(member, entity);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new DataMappingException(string.Format("The DataMapper could not get the value for {0}.{1}.", entity.GetType().Name, fieldName));
|
throw new DataMappingException(string.Format("The DataMapper could not get the value for {0}.{1}.", entity.GetType().Name, fieldName));
|
||||||
|
@ -84,7 +78,7 @@ namespace Marr.Data.Reflection
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public object CreateInstance(Type type)
|
public object CreateInstance(Type type)
|
||||||
{
|
{
|
||||||
return _reflector.Instantiate(type);
|
return type.CreateInstance();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,15 +14,7 @@ You should have received a copy of the GNU Lesser General Public
|
||||||
License along with this library. If not, see <http://www.gnu.org/licenses/>. */
|
License along with this library. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
/* *
|
|
||||||
* The FastReflection library was written by Renaud Bédard (renaud.bedard@gmail.com)
|
|
||||||
* http://theinstructionlimit.com/?p=76
|
|
||||||
* */
|
|
||||||
using FastReflection;
|
|
||||||
|
|
||||||
// ReSharper disable CheckNamespace
|
// ReSharper disable CheckNamespace
|
||||||
namespace Marr.Data
|
namespace Marr.Data
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="fasterflect" version="2.1.3" targetFramework="net40" />
|
||||||
|
</packages>
|
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using Marr.Data;
|
using Marr.Data;
|
||||||
|
@ -59,7 +60,7 @@ namespace NzbDrone.Core.Datastore
|
||||||
MapRepository.Instance.RegisterTypeConverter(typeof(Boolean), new BooleanIntConverter());
|
MapRepository.Instance.RegisterTypeConverter(typeof(Boolean), new BooleanIntConverter());
|
||||||
MapRepository.Instance.RegisterTypeConverter(typeof(Enum), new EnumIntConverter());
|
MapRepository.Instance.RegisterTypeConverter(typeof(Enum), new EnumIntConverter());
|
||||||
MapRepository.Instance.RegisterTypeConverter(typeof(QualityModel), new EmbeddedDocumentConverter());
|
MapRepository.Instance.RegisterTypeConverter(typeof(QualityModel), new EmbeddedDocumentConverter());
|
||||||
MapRepository.Instance.RegisterTypeConverter(typeof(MediaCover.MediaCover), new EmbeddedDocumentConverter());
|
MapRepository.Instance.RegisterTypeConverter(typeof(List<MediaCover.MediaCover>), new EmbeddedDocumentConverter());
|
||||||
MapRepository.Instance.RegisterTypeConverter(typeof(Quality), new QualityIntConverter());
|
MapRepository.Instance.RegisterTypeConverter(typeof(Quality), new QualityIntConverter());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,6 +50,7 @@ namespace NzbDrone.Core.MetadataSource
|
||||||
var series = new Series();
|
var series = new Series();
|
||||||
series.TvDbId = show.tvdb_id;
|
series.TvDbId = show.tvdb_id;
|
||||||
series.TvRageId = show.tvrage_id;
|
series.TvRageId = show.tvrage_id;
|
||||||
|
series.ImdbId = show.imdb_id;
|
||||||
series.Title = show.title;
|
series.Title = show.title;
|
||||||
series.FirstAired = show.first_aired;
|
series.FirstAired = show.first_aired;
|
||||||
series.Overview = show.overview;
|
series.Overview = show.overview;
|
||||||
|
|
|
@ -23,6 +23,9 @@ namespace NzbDrone.Core.Tv
|
||||||
}
|
}
|
||||||
|
|
||||||
public int TvDbId { get; set; }
|
public int TvDbId { get; set; }
|
||||||
|
public int TvRageId { get; set; }
|
||||||
|
public string ImdbId { get; set; }
|
||||||
|
|
||||||
public string Title { get; set; }
|
public string Title { get; set; }
|
||||||
public string CleanTitle { get; set; }
|
public string CleanTitle { get; set; }
|
||||||
public SeriesStatusType Status { get; set; }
|
public SeriesStatusType Status { get; set; }
|
||||||
|
@ -41,7 +44,7 @@ namespace NzbDrone.Core.Tv
|
||||||
public string Network { get; set; }
|
public string Network { get; set; }
|
||||||
public DateTime? CustomStartDate { get; set; }
|
public DateTime? CustomStartDate { get; set; }
|
||||||
public bool UseSceneNumbering { get; set; }
|
public bool UseSceneNumbering { get; set; }
|
||||||
public int TvRageId { get; set; }
|
|
||||||
public string TitleSlug { get; set; }
|
public string TitleSlug { get; set; }
|
||||||
|
|
||||||
//Todo: This should be a double since there are timezones that aren't on a full hour offset
|
//Todo: This should be a double since there are timezones that aren't on a full hour offset
|
||||||
|
|
Loading…
Reference in New Issue