更新数据库错误无法解析成员类型
Error on update-database Can't resolve Type for member
当我尝试在我的程序包管理器控制台上按下更新数据库时
我得到这个错误
Type is not resolved for member 'Newtonsoft.Json.JsonSerializationException,Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'.
我该如何解决这个错误?我的代码是:
protected override void Seed(Gamer.DataLayer.GamerContext context)
{
// TODO:
// Create a class GamerData to store a list of Games
// Deserialize the JSON string to a GamerData object (call this object gdata)
var gdata = JsonConvert.DeserializeObject<GamerContext>(_json);
Console.WriteLine(gdata.Games.Where(x => x.Language == "EN"));
foreach (var game in gdata.Games)
{
foreach (var gameGenre in game.GameGenres)
{
Genre myGenre = context.Genres.Where(g => g.GenreId == gameGenre.GenreId).FirstOrDefault();
if (myGenre != null)
gameGenre.GenreId = myGenre.GenreId;
}
foreach (var platformGame in game.PlatformGames)
{
Platform myPlatform = context.Platforms.Where(p => p.PlatformId == platformGame.Platform.PlatformId).FirstOrDefault();
if (myPlatform != null)
platformGame.Platform = myPlatform;
}
context.Games.Add(game);
context.SaveChanges();
// Add the data to your database
}
}
_json Json 是一个充满了 JSON 的字符串,其中包含我数据库的所有数据
JSON 字符串
private string _json = @"{""Games"":[
{
""EAN"":""2750026762618"",
""GameName"":""Uncharted 4"",
""Language"":""en|nl"",
""GameGenres"":
[
{
""GameId"": ""2750026762618"",
""Genre"":{
""GenreId"":""1"",
""GenreName"":""Actie""}
},
{
""GameId"": ""2750026762618"",
""Genre"":{
""GenreId"":""2"",
""GenreName"":""Avontuur""}
},
{
""GameId"": ""2750026762618"",
""Genre"":{
""GenreId"":""9"",
""GenreName"":""Role Playing Game""}
},
{
""GameId"": ""2750026762618"",
""Genre"":{
""GenreId"":""10"",
""GenreName"":""Shooter""}
}
],
""PlatformGames"":
[
{
""GameId"":""2750026762618"",
""Platform"":{
""PlatformId"":""2"",
""PlatformName"":""Playstation 4""},
""Price"":""59.99""
}
]
},
{
""EAN"":""5030944112878"",
""GameName"":""Fifa 16"",
""Language"":""en"",
""GameGenres"":
[
{
""GameId"": ""5030944112878"",
""Genre"":{
""GenreId"":""1"",
""GenreName"":""Actie""}
},
{
""GameId"": ""5030944112878"",
""Genre"":{
""GenreId"":""12"",
""GenreName"":""Sport""}
}
],
""PlatformGames"":
[
{
""GameId"":""5030944112878"",
""Platform"":{
""PlatformId"":""1"",
""PlatformName"":""PC""},
""Price"":""34.99""
},
{
""GameId"":""5030944112878"",
""Platform"":{
""PlatformId"":""2"",
""PlatformName"":""Playstation 4""},
""Price"":""39.99""
},
{
""GameId"":""5030944112878"",
""Platform"":{
""PlatformId"":""3"",
""PlatformName"":""Xbox One""},
""Price"":""39.99""
}
]
},
{
""EAN"":""5030948112294"",
""GameName"":""De Sims 4"",
""Language"":""nl"",
""GameGenres"":
[
{
""GameId"": ""5030948112294"",
""Genre"":{
""GenreId"":""11"",
""GenreName"":""Simulatie""}
}
],
""PlatformGames"":
[
{
""GameId"":""5030948112294"",
""Platform"":{
""PlatformId"":""1"",
""PlatformName"":""PC""},
""Price"":""71.08""
}
]
},
{
""EAN"":""5030949112576"",
""GameName"":""Star Wars Battlefront"",
""Language"":""en"",
""GameGenres"":
[
{
""GameId"": ""5030949112576"",
""Genre"":{
""GenreId"":""2"",
""GenreName"":""Avontuur""}
},
{
""GameId"": ""5030949112576"",
""Genre"":{
""GenreId"":""10"",
""GenreName"":""Shooter""}
}
],
""PlatformGames"":
[
{
""GameId"":""5030949112576"",
""Platform"":{
""PlatformId"":""1"",
""PlatformName"":""PC""},
""Price"":""24.99""
},
{
""GameId"":""5030949112576"",
""Platform"":{
""PlatformId"":""2"",
""PlatformName"":""Playstation 4""},
""Price"":""24.99""
},
{
""GameId"":""5030949112576"",
""Platform"":{
""PlatformId"":""3"",
""PlatformName"":""Xbox One""},
""Price"":""34.99""
}
]
},
{
""EAN"":""5055856403357"",
""GameName"":""Doom"",
""Language"":""en"",
""GameGenres"":
[
{
""GameId"": ""5055856403357"",
""Genre"":{
""GenreId"":""1"",
""GenreName"":""Actie""}
}
],
""PlatformGames"":
[
{
""GameId"":""5055856403357"",
""Platform"":{
""PlatformId"":""1"",
""PlatformName"":""PC""},
""Price"":""49.99""
},
{
""GameId"":""5055856403357"",
""Platform"":{
""PlatformId"":""2"",
""PlatformName"":""Playstation 4""},
""Price"":""59.99""
},
{
""GameId"":""5055856403357"",
""Platform"":{
""PlatformId"":""3"",
""PlatformName"":""Xbox One""},
""Price"":""59.99""
}
]
},
{
""EAN"":""5060146463188"",
""GameName"":""Minecraft Story Mode"",
""Language"":""nl"",
""GameGenres"":
[
{
""GameId"": ""5060146463188"",
""Genre"":{
""GenreId"":""2"",
""GenreName"":""Avontuur""}
}
],
""PlatformGames"":
[
{
""GameId"":""5060146463188"",
""Platform"":{
""PlatformId"":""2"",
""PlatformName"":""Playstation 4""},
""Price"":""30.99""
},
{
""GameId"":""5060146463188"",
""Platform"":{
""PlatformId"":""3"",
""PlatformName"":""Xbox One""},
""Price"":""31.99""
},
{
""GameId"":""5060146463188"",
""Platform"":{
""PlatformId"":""4"",
""PlatformName"":""Wii U""},
""Price"":""39.99""
}
]
},
{
""EAN"":""5055856406136"",
""GameName"":""Fallout 4"",
""Language"":""en"",
""GameGenres"":
[
{
""GameId"": ""5055856406136"",
""Genre"":{
""GenreId"":""1"",
""GenreName"":""Actie""}
},
{
""GameId"": ""5055856406136"",
""Genre"":{
""GenreId"":""2"",
""GenreName"":""Avontuur""}
},
{
""GameId"": ""5055856406136"",
""Genre"":{
""GenreId"":""5"",
""GenreName"":""Open wereld""}
},
{
""GameId"": ""5055856406136"",
""Genre"":{
""GenreId"":""9"",
""GenreName"":""Role Playing Game""}
},
{
""GameId"": ""5055856406136"",
""Genre"":{
""GenreId"":""10"",
""GenreName"":""Shooter""}
}
],
""PlatformGames"":
[
{
""GameId"":""5055856406136"",
""Platform"":{
""PlatformId"":""1"",
""PlatformName"":""PC""},
""Price"":""114.4""
},
{
""GameId"":""5055856406136"",
""Platform"":{
""PlatformId"":""2"",
""PlatformName"":""Playstation 4""},
""Price"":""264.99""
},
{
""GameId"":""5055856406136"",
""Platform"":{
""PlatformId"":""3"",
""PlatformName"":""Xbox One""},
""Price"":""114.99""
}
]
}
]
}";
有人知道我做错了什么吗?
GamerContext
using Gamer.DomainClasses.Models;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Gamer.DataLayer
{
public class GamerContext : DbContext
{
public GamerContext() : base("Gamer")
{ }
public DbSet<Game> Games { get; set; }
public DbSet<Genre> Genres { get; set; }
public DbSet<PlatformGames> PlatformGames { get; set; }
public DbSet<Platform> Platforms { get; set; }
public DbSet<GameGenres> GameGenres { get; set; }
}
}
您的 JSON 可能有一些与您的 class 不同的属性(不同的名称、类型等...)。
提示:如果您想调试 Seed
,您需要通过代码启动调试器:
protected override void Seed(dbEmployeePortal context)
{
try
{
if(!Debugger.IsAttached)
Debugger.Launch()
}
catch(Exception e)
{ // breakpoint here. This breakpoint needs to be set on the new visual studio that will open for the debug session.
}
}
当我尝试在我的程序包管理器控制台上按下更新数据库时 我得到这个错误
Type is not resolved for member 'Newtonsoft.Json.JsonSerializationException,Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'.
我该如何解决这个错误?我的代码是:
protected override void Seed(Gamer.DataLayer.GamerContext context)
{
// TODO:
// Create a class GamerData to store a list of Games
// Deserialize the JSON string to a GamerData object (call this object gdata)
var gdata = JsonConvert.DeserializeObject<GamerContext>(_json);
Console.WriteLine(gdata.Games.Where(x => x.Language == "EN"));
foreach (var game in gdata.Games)
{
foreach (var gameGenre in game.GameGenres)
{
Genre myGenre = context.Genres.Where(g => g.GenreId == gameGenre.GenreId).FirstOrDefault();
if (myGenre != null)
gameGenre.GenreId = myGenre.GenreId;
}
foreach (var platformGame in game.PlatformGames)
{
Platform myPlatform = context.Platforms.Where(p => p.PlatformId == platformGame.Platform.PlatformId).FirstOrDefault();
if (myPlatform != null)
platformGame.Platform = myPlatform;
}
context.Games.Add(game);
context.SaveChanges();
// Add the data to your database
}
}
_json Json 是一个充满了 JSON 的字符串,其中包含我数据库的所有数据
JSON 字符串
private string _json = @"{""Games"":[
{
""EAN"":""2750026762618"",
""GameName"":""Uncharted 4"",
""Language"":""en|nl"",
""GameGenres"":
[
{
""GameId"": ""2750026762618"",
""Genre"":{
""GenreId"":""1"",
""GenreName"":""Actie""}
},
{
""GameId"": ""2750026762618"",
""Genre"":{
""GenreId"":""2"",
""GenreName"":""Avontuur""}
},
{
""GameId"": ""2750026762618"",
""Genre"":{
""GenreId"":""9"",
""GenreName"":""Role Playing Game""}
},
{
""GameId"": ""2750026762618"",
""Genre"":{
""GenreId"":""10"",
""GenreName"":""Shooter""}
}
],
""PlatformGames"":
[
{
""GameId"":""2750026762618"",
""Platform"":{
""PlatformId"":""2"",
""PlatformName"":""Playstation 4""},
""Price"":""59.99""
}
]
},
{
""EAN"":""5030944112878"",
""GameName"":""Fifa 16"",
""Language"":""en"",
""GameGenres"":
[
{
""GameId"": ""5030944112878"",
""Genre"":{
""GenreId"":""1"",
""GenreName"":""Actie""}
},
{
""GameId"": ""5030944112878"",
""Genre"":{
""GenreId"":""12"",
""GenreName"":""Sport""}
}
],
""PlatformGames"":
[
{
""GameId"":""5030944112878"",
""Platform"":{
""PlatformId"":""1"",
""PlatformName"":""PC""},
""Price"":""34.99""
},
{
""GameId"":""5030944112878"",
""Platform"":{
""PlatformId"":""2"",
""PlatformName"":""Playstation 4""},
""Price"":""39.99""
},
{
""GameId"":""5030944112878"",
""Platform"":{
""PlatformId"":""3"",
""PlatformName"":""Xbox One""},
""Price"":""39.99""
}
]
},
{
""EAN"":""5030948112294"",
""GameName"":""De Sims 4"",
""Language"":""nl"",
""GameGenres"":
[
{
""GameId"": ""5030948112294"",
""Genre"":{
""GenreId"":""11"",
""GenreName"":""Simulatie""}
}
],
""PlatformGames"":
[
{
""GameId"":""5030948112294"",
""Platform"":{
""PlatformId"":""1"",
""PlatformName"":""PC""},
""Price"":""71.08""
}
]
},
{
""EAN"":""5030949112576"",
""GameName"":""Star Wars Battlefront"",
""Language"":""en"",
""GameGenres"":
[
{
""GameId"": ""5030949112576"",
""Genre"":{
""GenreId"":""2"",
""GenreName"":""Avontuur""}
},
{
""GameId"": ""5030949112576"",
""Genre"":{
""GenreId"":""10"",
""GenreName"":""Shooter""}
}
],
""PlatformGames"":
[
{
""GameId"":""5030949112576"",
""Platform"":{
""PlatformId"":""1"",
""PlatformName"":""PC""},
""Price"":""24.99""
},
{
""GameId"":""5030949112576"",
""Platform"":{
""PlatformId"":""2"",
""PlatformName"":""Playstation 4""},
""Price"":""24.99""
},
{
""GameId"":""5030949112576"",
""Platform"":{
""PlatformId"":""3"",
""PlatformName"":""Xbox One""},
""Price"":""34.99""
}
]
},
{
""EAN"":""5055856403357"",
""GameName"":""Doom"",
""Language"":""en"",
""GameGenres"":
[
{
""GameId"": ""5055856403357"",
""Genre"":{
""GenreId"":""1"",
""GenreName"":""Actie""}
}
],
""PlatformGames"":
[
{
""GameId"":""5055856403357"",
""Platform"":{
""PlatformId"":""1"",
""PlatformName"":""PC""},
""Price"":""49.99""
},
{
""GameId"":""5055856403357"",
""Platform"":{
""PlatformId"":""2"",
""PlatformName"":""Playstation 4""},
""Price"":""59.99""
},
{
""GameId"":""5055856403357"",
""Platform"":{
""PlatformId"":""3"",
""PlatformName"":""Xbox One""},
""Price"":""59.99""
}
]
},
{
""EAN"":""5060146463188"",
""GameName"":""Minecraft Story Mode"",
""Language"":""nl"",
""GameGenres"":
[
{
""GameId"": ""5060146463188"",
""Genre"":{
""GenreId"":""2"",
""GenreName"":""Avontuur""}
}
],
""PlatformGames"":
[
{
""GameId"":""5060146463188"",
""Platform"":{
""PlatformId"":""2"",
""PlatformName"":""Playstation 4""},
""Price"":""30.99""
},
{
""GameId"":""5060146463188"",
""Platform"":{
""PlatformId"":""3"",
""PlatformName"":""Xbox One""},
""Price"":""31.99""
},
{
""GameId"":""5060146463188"",
""Platform"":{
""PlatformId"":""4"",
""PlatformName"":""Wii U""},
""Price"":""39.99""
}
]
},
{
""EAN"":""5055856406136"",
""GameName"":""Fallout 4"",
""Language"":""en"",
""GameGenres"":
[
{
""GameId"": ""5055856406136"",
""Genre"":{
""GenreId"":""1"",
""GenreName"":""Actie""}
},
{
""GameId"": ""5055856406136"",
""Genre"":{
""GenreId"":""2"",
""GenreName"":""Avontuur""}
},
{
""GameId"": ""5055856406136"",
""Genre"":{
""GenreId"":""5"",
""GenreName"":""Open wereld""}
},
{
""GameId"": ""5055856406136"",
""Genre"":{
""GenreId"":""9"",
""GenreName"":""Role Playing Game""}
},
{
""GameId"": ""5055856406136"",
""Genre"":{
""GenreId"":""10"",
""GenreName"":""Shooter""}
}
],
""PlatformGames"":
[
{
""GameId"":""5055856406136"",
""Platform"":{
""PlatformId"":""1"",
""PlatformName"":""PC""},
""Price"":""114.4""
},
{
""GameId"":""5055856406136"",
""Platform"":{
""PlatformId"":""2"",
""PlatformName"":""Playstation 4""},
""Price"":""264.99""
},
{
""GameId"":""5055856406136"",
""Platform"":{
""PlatformId"":""3"",
""PlatformName"":""Xbox One""},
""Price"":""114.99""
}
]
}
]
}";
有人知道我做错了什么吗?
GamerContext
using Gamer.DomainClasses.Models;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Gamer.DataLayer
{
public class GamerContext : DbContext
{
public GamerContext() : base("Gamer")
{ }
public DbSet<Game> Games { get; set; }
public DbSet<Genre> Genres { get; set; }
public DbSet<PlatformGames> PlatformGames { get; set; }
public DbSet<Platform> Platforms { get; set; }
public DbSet<GameGenres> GameGenres { get; set; }
}
}
您的 JSON 可能有一些与您的 class 不同的属性(不同的名称、类型等...)。
提示:如果您想调试 Seed
,您需要通过代码启动调试器:
protected override void Seed(dbEmployeePortal context)
{
try
{
if(!Debugger.IsAttached)
Debugger.Launch()
}
catch(Exception e)
{ // breakpoint here. This breakpoint needs to be set on the new visual studio that will open for the debug session.
}
}