POCO LinqToSQL ОШИБКА: System.InvalidOperationException: Bad Storage свойство: - PullRequest
0 голосов
/ 01 апреля 2011

Чего мне не хватает?

City.cs


[Table(Name = "City")]
    public class City
    {
        [Column(IsDbGenerated = true, IsPrimaryKey = true)]
        public int CityId { get; set; }

        [Column(CanBeNull = false)]
        public string CityName { get; set; }


        private EntitySet<CityLocality> _cityLocalities;

        [Association(Storage = "_CityLocality", OtherKey = "CityId", Name = "City_CityLocality")]
        public EntitySet<CityLocality> CitiyLocalities
        {
            get { return _cityLocalities; }
            set { _cityLocalities.Assign(value);}
        }

CityLocality

  [Table(Name = "CityLocality")]
    public class CityLocality
    {
       [Column(IsPrimaryKey = true, IsDbGenerated = true)]
        public int LocalityId { get; set; }

        [Column(CanBeNull = false)]
        public string LocalityName { get; set; }

        [Association(Name = "FK_CityLocation_City", Storage = "_City", ThisKey = "CityId", OtherKey = "CityId", IsForeignKey = true)]
        [Column(CanBeNull = false)]
        public int CityId { get; set; }


    }

SqlCityRepository


 public class SqlCityRepository : ICityRepository
    {
        private Table<City> _citys;

        public SqlCityRepository(string connectionString)
        {
            _citys = (new DataContext(connectionString)).GetTable<City>();

        }

        public IQueryable<City> Cities
        {
            get { return _citys; }
        }

        public void Add(City city)
        {
            if(city.CityId == 0)
            {
                _citys.InsertOnSubmit(city);
            }
            else
            {
                _citys.Attach(city);
                _citys.Context.Refresh(RefreshMode.KeepCurrentValues,city);
            }
            _citys.Context.SubmitChanges();
        }

        public City GetById(int cityId)
        {
            return (from c in _citys where c.CityId == cityId select c).FirstOrDefault();
        }
    }

TestFixture


   [Test]
        public void CityAddFunctionalityShouldWork()
        {
            var repository = new SqlCityRepository(_connectionSting);
            var city = new City();
            city.CityName = "BagChenDil";


            using(var scope = new TransactionScope())
            {
                repository.Add(city);
                var banChenDil = (from c in repository.Cities select c).FirstOrDefault();

                Assert.AreEqual(banChenDil.CityName, city.CityName);

                scope.Dispose();
            }

        }

Сообщение об ошибке:

System.InvalidOperationException: Неверное свойство хранилища: '_CityLocality' для элемента 'Entities.Location.City.CitiyLocalities'.

1 Ответ

0 голосов
/ 02 апреля 2011

Было несколько проблем с этим.

1) уведомление.

private EntitySet<CityLocality> _cityLocalities;

Это должно было быть.

private EntitySet<CityLocality> _cityLocalities = new EntitySet<CityLocality>();

2) [Association(Storage = "_CityLocality", это должно было быть.

   [Association(Storage = "_cityLocalities",

3) Проверил схему БД и обнаружил, что столбцы имеют значение NULL, если я изменил их с NULL на NULL.

и все работало нормально.

С уважением Вини.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...