2013-03-12 2 views
2

При создании приложения F # ASP.NET MVC 4 с шаблоном C#/F # из галереи VisualStudio сомнение напало на меня. У меня есть следующий класс модели:Типы F # или системные типы с ASP.NET MVC?

namespace MyApp.Models 

open System 
open System.ComponentModel.DataAnnotations 
open System.Collections.Generic 

type Product() = 
    [<Key>] member val Id = Guid.NewGuid() with get, set 
    [<Required>] member val Name = "" with get, set 
    member val Iban = "" with get, set 
    member val Categories = new List<ProductCategory>() with get, set 

В F # имеет свои собственные типы, в таких случаях, как последний, мы должны использовать F # эквивалент (F # список, последовательность ...) или мы должны использовать систему типы? Если да, то какие будут рассуждения?

спасибо!

ответ

2

Как правило, я бы сказал, какие языки (ов) потребляют ваши модели. Если это F # полностью вниз, пойдите для этого. Если он смешанный, вам нужно быть более разумным. В стороне, Option<> и List<> играют очень хорошо с C# (хотя я нахожу, что мне нужны псевдонимы типов, чтобы «очистить» часть кода). Также последовательность F # - это всего лишь IEnumerable<>, поэтому не стоит беспокоиться. Кроме того, нет ничего плохого в использовании массивов и ResizeArray<> (aka System.Collections.Generic.List<>) в F # - вы просто должны помнить о мутации состояния.

+0

Одна деталь, которую я не принимал во внимание, это тот факт, что я использую Entity Framework. Я исследую этот бит дальше, но я думаю, что самый безопасный вариант - оставаться в системных типах в любом случае и просто играть с типами F # внутри контроллеров, которые являются изолированными битами чистого кода F #. Спасибо за ваш комментарий, я думаю, мне нужен был кто-то, чтобы это было ясно;). Ура! –

Смежные вопросы