Способ отправить приглашение на встречу в Outlook (и иметь распознанный) идет как это:
multipart/alternative
почта: text/html
(или независимо от того, что Вам нравится) - это отображено "обычным" почтовым читателям или как нейтрализация и содержит сводку события в человекочитаемой форме text/calendar; method=REQUEST
, содержит содержание ics файла (заголовок method
, параметр должен соответствовать методу в ics). Не упустите кодирование правильного текста, объявив charset
, параметр заголовка не причинит боль. text/calendar
часть. Для справки на деталях и особенностях ics формата файла, обязательно посетить iCalendar Выборки Спецификации Masahide Kanzaki. Они - свет в темноте, намного лучше, чем прогрызание Вашего пути до [1 117] RFC 2445 . Но с другой стороны, возможно, удобная библиотека существует для.NET.
У всех свое мнение, но я из тех, кто идет вперед и редактирует сгенерированные файлы. Если я могу добавить частичный класс, я это сделаю, но в подобных случаях я бы пошел дальше и отредактировал свойство в сгенерированном файле.
Многие сгенерированные файлы следует рассматривать как основу, которая принадлежит вам, когда генератор выплюнет это из. Если вы начнете думать об этом таким образом, некоторые вещи могут стать намного проще. Между прочим, я не стал бы защищать этот подход для файла, который будет часто регенерироваться, поскольку это вызовет гораздо больше головной боли.
Спасибо, что поделились своей точкой зрения по этому поводу. Я подумал об этом, но не уверен, хочу ли я этого.
Решение, которое я придумал сам, заключалось в том, чтобы сделать все мои сгенерированные объекты абстрактными, а все мои свойства виртуальными, назвав их, например, «DBCustomer», и создать унаследованный от класса «Клиент». Затем переопределите все свойства и вызовите base.PropertyName в геттерах и сеттерах. Что вы думаете об этом?
Я столкнулся с этой проблемой с MVC V1 и xVal. В итоге я использовал «приятельские классы», как подробно описано здесь Schotime (кеш Google, так как у него проблемы с веб-сайтом).
Он отлично работает для меня, но я не знаком с методом MVC v2 для этого чтобы знать, будут ли его подпрограммы «собирать» метаданные в ваших классах друзей.
Трудно спорить с кем-то, кто начинает со слов «у всех разные мнения», но мне бы не хотелось изменять сгенерированные файлы для LINQ . Я вижу смысл в каркасе, но когда я нахожусь в разработке, я вношу так много изменений в свою базу данных (и отношения), что я часто отбрасываю класс и воссоздаю его, перетаскивая таблицу обратно. Иногда я удаляю все классы и перетаскиваю всю базу данных. С другой стороны,
если я использую LinqToSQL для создания класса, я всегда создаю облегченную версию контейнера данных с постфиксом Data. Затем я использую этот класс для передачи данных на / от клиента / сервера.
Возможно, я не могу описать это идеально, но я считаю, что это довольно распространенная практика.
Скажем, LinqToSql дает вам класс Car с идентификатором int, int дверями, цветом строки и колесами int на основе таблицы Cars. Я бы создал
public class CarData
{
[Required(ErrorMessage = "ID is Required")]
public int id { get; set; }
[Required(ErrorMessage = "doors are Required")]
public int doors { get; set; }
[Required(ErrorMessage = "color is Required")]
public string color { get; set; }
[Required(ErrorMessage = "wheels are Required")]
public int wheels { get; set; }
}
. Вы даже можете использовать linq для выбора нового из них с помощью
var myCar =
from c in MyDataContext.Cars
where c.id == 1
select new CarData()
{
id = c.id,
doors = c.doors,
color = c.color,
wheels = c.wheels
};
. С этим вы даже сохраните функцию отложенного выполнения linq to sql . В любом случае, вы должны добавить эти атрибуты в этот класс «Data» (как показано), чтобы получить специализированный легкий класс, который легко сериализуется и имеет все необходимые атрибуты проверки.