diff --git a/src/EntityFramework.DynamicFilters.sln b/src/EntityFramework.DynamicFilters.sln
index ba581e0..95434ed 100644
--- a/src/EntityFramework.DynamicFilters.sln
+++ b/src/EntityFramework.DynamicFilters.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27004.2005
+# Visual Studio 14
+VisualStudioVersion = 14.0.25123.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFramework.DynamicFilters", "EntityFramework.DynamicFilters\EntityFramework.DynamicFilters.csproj", "{56E36AD1-E675-42F0-96CB-7F475E05E491}"
EndProject
diff --git a/src/EntityFramework.DynamicFilters/DynamicFilterDefinition.cs b/src/EntityFramework.DynamicFilters/DynamicFilterDefinition.cs
index df0c014..62b3146 100644
--- a/src/EntityFramework.DynamicFilters/DynamicFilterDefinition.cs
+++ b/src/EntityFramework.DynamicFilters/DynamicFilterDefinition.cs
@@ -6,7 +6,8 @@
namespace EntityFramework.DynamicFilters
{
- internal class DynamicFilterDefinition
+ [Serializable]
+ public class DynamicFilterDefinition
{
///
/// Unique ID assigned to each distinct filter. Used to find unique filters on an entity
@@ -22,16 +23,24 @@ internal class DynamicFilterDefinition
///
public string ColumnName { get; private set; }
+
+
+ [NonSerialized]
+ private LambdaExpression _predicate;
+
+
///
/// Set if the filter is a LambdaExpression. Null if filter is a single column equality filter.
- ///
- public LambdaExpression Predicate { get; private set; }
+ ///
+
+ public LambdaExpression Predicate { get { return _predicate; } private set { _predicate = value; } }
public Type CLRType { get; private set; }
public DynamicFilterOptions Options { get; private set; }
- public string AttributeName { get { return string.Concat(DynamicFilterConstants.ATTRIBUTE_NAME_PREFIX, DynamicFilterConstants.DELIMETER, CLRType.Name, DynamicFilterConstants.DELIMETER, FilterName); } }
+ public string AttributeName { get { return DynamicFilterConstants.ATTRIBUTE_NAME_PREFIX; } }
+
internal DynamicFilterDefinition(Guid id, string filterName, LambdaExpression predicate, string columnName, Type clrType, DynamicFilterOptions options)
{
diff --git a/src/EntityFramework.DynamicFilters/DynamicFilterSerializer.cs b/src/EntityFramework.DynamicFilters/DynamicFilterSerializer.cs
new file mode 100644
index 0000000..ecd9a4e
--- /dev/null
+++ b/src/EntityFramework.DynamicFilters/DynamicFilterSerializer.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Data.Entity.Infrastructure;
+using System.IO;
+using System.Runtime.Serialization.Formatters.Binary;
+
+namespace EntityFramework.DynamicFilters
+{
+ internal class DynamicFilterSerializer : IMetadataAnnotationSerializer
+ {
+ public object Deserialize(string name, string value)
+ {
+ using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(value)))
+ {
+ var bf = new BinaryFormatter();
+
+ return (DynamicFilterDefinition)bf.Deserialize(ms);
+ }
+ }
+
+ public string Serialize(string name, object value)
+ {
+ using (MemoryStream ms = new MemoryStream())
+ {
+ var bf = new BinaryFormatter();
+ bf.Serialize(ms, value);
+
+ return Convert.ToBase64String(ms.ToArray());
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/EntityFramework.DynamicFilters/EntityFramework.DynamicFilters.csproj b/src/EntityFramework.DynamicFilters/EntityFramework.DynamicFilters.csproj
index 0cf4075..36caab5 100644
--- a/src/EntityFramework.DynamicFilters/EntityFramework.DynamicFilters.csproj
+++ b/src/EntityFramework.DynamicFilters/EntityFramework.DynamicFilters.csproj
@@ -40,10 +40,12 @@
- ..\packages\EntityFramework.6.1.1\lib\net40\EntityFramework.dll
+ ..\packages\EntityFramework.6.2.0\lib\net40\EntityFramework.dll
+ True
- ..\packages\EntityFramework.6.1.1\lib\net40\EntityFramework.SqlServer.dll
+ ..\packages\EntityFramework.6.2.0\lib\net40\EntityFramework.SqlServer.dll
+ True
@@ -66,7 +68,9 @@
+
+
diff --git a/src/EntityFramework.DynamicFilters/MyDbConfiguration.cs b/src/EntityFramework.DynamicFilters/MyDbConfiguration.cs
new file mode 100644
index 0000000..ce39c81
--- /dev/null
+++ b/src/EntityFramework.DynamicFilters/MyDbConfiguration.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Data.Entity;
+using System.Data.Entity.Infrastructure;
+using System.IO;
+using System.Linq;
+using System.Text;
+
+namespace EntityFramework.DynamicFilters
+{
+ public class MyDbConfiguration : DbConfiguration
+ {
+ public MyDbConfiguration() : base()
+ {
+ this.SetMetadataAnnotationSerializer("DynamicFilter", () => new DynamicFilterSerializer());
+ this.SetModelStore(new DefaultDbModelStore(Directory.GetCurrentDirectory()));
+ }
+ }
+}
diff --git a/src/EntityFramework.DynamicFilters/packages.config b/src/EntityFramework.DynamicFilters/packages.config
index 16578b4..c39c5f1 100644
--- a/src/EntityFramework.DynamicFilters/packages.config
+++ b/src/EntityFramework.DynamicFilters/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file